1

私の春ベースのプロジェクトには、クラスを持つコアモジュール(「コア」)があります

@Component
public class Superclass {
    // stuff
}

そのインスタンスは、次のようにコード全体に型ごとに挿入されます。

public class AService {

    @Autowired
    private Superclass superclass;

    // service stuff
}

また、コア モジュールに依存する 2 つの他のモジュールがあり、そのうちの 1 つ (「module1」と呼びましょう) はSuperclassを拡張します。

@component
public class Subclass extends Superclass {
    // overridden stuff
}

もう一方のモジュール (「module2」) はスーパークラスをそのまま使用します。

ここで、「child1」をコンパイルして実行すると、スーパークラスのインスタンスが予期されるすべての場所でサブクラスのインスタンスが使用されるようにしたいと考えています。だから私は構成クラスを書きます:

@Configuration
public class Module2Configuration {

    @Bean
    public Superclass superclass(){
        return new Subclass();
    }
}

これを実行すると、スーパークラスサブクラスの両方 がインスタンス化されていることがわかりますが、これは明らかに私が望んでいるものではありません。Spring がインスタンス化するタイプを「module1」で指定するにはどうすればよいですか?

4

3 に答える 3

3

@Qualifier("some name") アノテーションを使用できます。それに関する詳細情報があります: http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/

于 2013-06-05T11:21:10.730 に答える