1

2.5 より前のバージョンを .xml 構成からどのように抽出しますか? @Autowiredが私の武器庫から取り除かれたら、私は本当に何をすべきかわからないので、それは私を悩ませます.

DAO の実装を使いたいとします。

サービスクラスでは、通常次のように記述します。

 @Autowired 
 someDaoInterface generalDao;

それから私は通常電話します

 generalDao.someInterfaceMethod(someParam param);

このメソッドを使用するには、Spring 2.0 の構成から実装を抽出するにはどうすればよいですか?

それはただのようにばかげています:new ApplicationContext(pathToXml)そして、それを使用します.getBeanか、それとも他の方法がありますか?

構成ファイルから Bean を取り出すように要求するのはなぜですか? Spring MVC では、アプリケーション コンテキストから Bean を取得せずにロジックを実行する方法があるためです。

ハンドラーがある場合@Controller、サービス クラスのメソッドを呼び出す必要がありますか? したがって、それらはコンテキストから何らかの形で取得する必要があり、これまでのところ唯一の方法は@Autowired?を使用することです。次に、前の例で述べたようにサービス クラスに DAO クラスを設定し、それらもアプリケーション コンテキストから取得する必要があるため、サービス クラス自体のロジックを記述できるようになります。昔の人々はどのようにそれをしていたでしょうか?

@Autowired自動的に配線するのが便利だからではなく、何かを取り出す唯一の手段だと思います-私はXMLで完全に問題ありません。

4

1 に答える 1

0

プロパティまたはコンストラクターのパラメーターを介して明示的に配線するオプションがまだあります。(とにかく、コンテナにあいまいさがある場合、autowired は機能しません)

もちろん、Java コードでアプリケーション コンテキストと getBean() を使用できますが、これは DI パターンに違反し、すべてのスプリング機能が役に立たなくなります。DI の目的は、ビジネス ログインを実装の詳細から分離することです。それはビジネス ロジックではなく、依存関係がどのように、どこから来るかです。依存関係はただそこにあります。

ApplicationContext.getBean() を使用すると、このパターンが破られ、依存関係が導入されます。

  • 春そのもの
  • 構成名

これを行った後は、DI が提供するすべての利点を無効にしたため、DI とスプリングの使用を中止することもできます。(ところで、@Autowired も春への依存関係を導入し、DI パターンに違反します。また、利用可能なインスタンスが 1 つしかないことも意味します)

また、答えは次のとおりです。理想的なケースでは、コードに春への参照はまったくありません。インポートも注釈もありません - 協力しているエンティティのインターフェースだけです。

于 2012-04-21T07:17:11.513 に答える