1

次の問題があります。

抽象クラスがあるとしましょう:

public abstract class AbstractHbmDao implements SomeInterface {
    @Autowired
    protected SessionFactory sessionFactory;
    //getters & setters

    //interface stuff
}

次に、SomeInterface-> A_Interface、などのいくつかの実装。これは、すべての実装B_Interfaceで同じものを使用すれば問題ありません。SessionFactory

問題はSessionFactory、実装の個別のグループに個別を使用したいのですが、. で指定したくないことです@Qualifier。コードを変更する必要があるため、これらのグループを定義するには柔軟性が低くなります。また、アノテーションSessionFactoryで指定できない場合は、抽象クラスに入れます。@Qualifier

xml Bean 定義でそれを行う方法はありますか? 2 つの Bean を宣言しSessionFactory、それぞれに対応するクラスを参照してみましたが、それでもNoUniqueBeanDefinitionException.

4

2 に答える 2

1

フィールド注入はそれ自体では壊れやすいため、可能な限りコンストラクター注入を優先する必要があります。protectedそれがここでの明確な解決策です。基本クラスで、Bean を引数として受け取る抽象 ( ) コンストラクターを作成@Qualifierし、サブクラスのコンストラクターで使用します。

于 2014-10-19T18:53:17.067 に答える