Javaプログラムで@Aspectアノテーションを使用するAspectJクラスを使用していますが、インタフェースクラスに@Injectを使用してインジェクトするクラスコンストラクタを作成したいと思います。このよう次のようにNoAspectBoundExceptionのエラー:Dependency Injectionを使用したAspectJクラスのクラスコンストラクタでエラーが発生しました
de.hpi.cloudraid.exception.InternalClientError: org.aspectj.lang.NoAspectBoundException: Exception while initializing de.hpi.cloudraid.service.MeasurementAspect: java.lang.NoSuchMethodError: de.hpi.cloudraid.service.MeasurementAspect: method <init>()V not found
はここに私のクラスの抜粋です:
@Aspect
public class MeasurementAspect {
private final RemoteStatisticService remoteStatisticService;
@Inject
public MeasurementAspect(RemoteStatisticService remoteStatisticService) {
this.remoteStatisticService = remoteStatisticService;
}
....
}
私はプライベート@Inject RemoteStatisticService remoteStatisticServiceのような通常の噴射を使用しようとしました。しかし、それは私にNullPointerExceptionのエラーを与えました。
何か助けていただければ幸いです。ありがとう
このアスペクトには、引数なしのコンストラクタが必要です。依存関係注入は側面では機能しません。アプリの起動時に手動で注入する必要があります。同様の質問について私の[回答](http://stackoverflow.com/a/36049252/2699901)を参照してください。それは受け入れられた答えではありませんが、私はinter-type宣言を使用し、アドバイスされたbeanも管理しなければならないという受け入れられた答えよりも単純だと考えています。 –
@NándorElődFeketeGreeterAspect.aspectOf()のこのケースでは、提案をありがとう。setGreeter(greeter);私の場合に実装するには、私はインターフェイスクラスを注入していると同様のソリューションを考えることができなかったと私はそれがインターフェイスクラスのゲッターとセッターを作ることは不可能だと思う。 AspectJ実装のアスペクトクラスの代わりに注釈を使用しているため、メソッドaspectOf()もパッケージには存在しません。 CMIIW –
@NándorElődFekete私は実際には、アスペクトにインターフェイスを注入するのではなく、このクラスにインターフェイスを注入しますが、NullPointerExceptionエラーが発生するという「第三者」クラスの使用を考えました。たぶんあなたはそれを見て助けることができる[ここ](http://stackoverflow.com/questions/37319528/injection-error-nullpointerexception-for-aspectj-annotation-class-java)ありがとう –