私は、スーパークラスが実行されるインタフェースの実装を提供するためにサブクラスを必要とするスーパークラスを持っています。Java Spring - アノテーションを使用してスーパークラスにパラメータを挿入します。
私たちはSpringとDIを使用して、newを使って実装を作成することはできません。
サブクラスは、Springが初期化された後にのみ提供されるBeanを知っているので、スーパーコンストラクタを使用しても機能しません。
サブクラスの開発者がスーパークラスをセットアップする方法を知る必要があるので、サブクラスにq @PostConstruct
セットアップメソッドを使用したくない場合もあります。
私はスーパークラスはそれがセットアップ加盟できるように実装する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;
また、私はスーパークラスは、サブクラスがそれを使用しているかについて何も知りたくありません。