デフォルトメソッドのインタフェースにAutowire春豆

パブロ:

(私はいくつかのクラスが実装するインターフェイスにデフォルトのメソッドを追加する必要がありますが、私のIDEは不平を言いますbean may not have been initialized)。コードは次のようになります。

public interface IValidator {

    MyValidationBean beanToBeAutowired;
    ...
    default Boolean doSomeNewValidations(){
        return beanToBeAutowired.doSomeNewValidations();
    }
}

それは、インタフェースにオートワイヤリングが許可されていないか、何かの間違ったコードでありますされるだけということ?使用する@Componentインターフェイスにしても、違いはありません。

私はむしろ代わりに、抽象クラスを使用してのこの設計を維持するだろう。

shazin:

インターフェイスに変数を追加すると、Javaで可能ではありません。これは、デフォルトのAによるであろうpublic static final定数。以下のいずれかを行う必要がありますので:

MyValidationBean beanToBeAutowired = new MyValidationBeanImpl();

または以下:

MyValidationBean beanToBeAutowired();

default Boolean doSomeNewValidations(){
    return beanToBeAutowired().doSomeNewValidations();
}

そして、あなたは無効にすることができbeanToBeAutowired、実装クラスにメソッドを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=212537&siteId=1