スーパークラスが実行されるインターフェースの実装を提供するためにサブクラスを必要とするスーパークラスがあります。
Spring と DI を使用しているため、単に new で実装を作成することはできません。
サブクラスは、Spring が初期化された後にのみ提供する Bean を認識するため、スーパー コンストラクターの使用は機能しません。
@PostConstruct
また、サブクラスの開発者がスーパークラスのセットアップ方法を知る必要があるため、サブクラスでq setup メソッドを使用したくありません。
メンバーをセットアップできるように、スーパークラスがサブクラスに実装 Bean への参照を提供するように要求する必要があります。
スーパークラスは UrlBuilder インターフェイスを使用します。
public class JsonConnection{
private UrlBuilder urlBuilder;
}
サブクラスは、UrlBuilderFacebook
依存性注入を介して実装 ( ) を提供します。
@Component
public class FacebookJsonConnection extends JsonConnection {
@Inject
private UrlBuilder urlBuilderFacebook;
}
スーパークラスは抽象またはコンポーネントにすることができますが、問題ではありません。UrlBuilder
重要なのは、必要に応じてスーパークラスと@Inject
それらを提供する軽量のサブクラスを作成できるようにしたいということです。
@Inject
private JsonConnection facebookJsonConnection;
また
@Inject
private JsonConnection redmineJsonConnection;
また、どのサブクラスがそれを使用しているかについて、スーパークラスに何も知らせたくありません。