2

プロジェクトで Java ベースの Spring 構成を使用しており、@Configuration の @Bean アノテーション付きメソッドで Bean 構築を指定しています。最近、私は @Autowired を使用して @Configuration からすべての重要でない Bean を削除し、それらの小さな「ルート」セット (主要なサービスと技術的な Bean など) のみを残す方がよいのではないかと考え始めました。 Spring MVCの)。

残念ながら、Spring は @Autowired 依存関係の実装に気付くことができるのは、コンポーネントがスキャンされたパッケージ内にある場合に限られるようです。

各 Bean を明示的に指定せずに @Autowired を Java ベースの構成で使用する方法はありますか?

4

2 に答える 2

4

私があなたを正しく理解していれば、Spring がインターフェイスDaoImplの自動配線された依存関係に基づいてクラスを自動検出することを期待していDaoます。

<bean>これは起こりません。コンポーネント スキャンを使用するか、Bean をまたはとして明示的に宣言する必要があります@Bean

これは、Java が特定のインターフェースを実装するクラスを検出するメカニズムを提供していないためです。クラスローダーはそのようには機能しません。

于 2010-06-04T09:36:04.050 に答える
0

dao を介して Idao を実装していて、その依存関係を参照変数に @Autowire することを検討している場合は、最初に Bean を定義して、(Java ベースの構成で) 単純に impl クラスをインターフェイスに返すようにする必要があります。Bean 名はメソッド名の名前です。

これを自動配線すると、自動配線しようとしている参照変数と宣言の間で一致する名前が検索されます。

それなら大丈夫です。お役に立てれば。

于 2014-11-02T03:47:36.380 に答える