メインプロジェクトで@configurableの注釈が付けられたクラスでAspectJにロードタイムウィービングを実行させるのに問題があります。フィールドは設定されず、セッターもタッチされません。
構成を抽出して小さなサンドボックスプロジェクトでテストしたので、構成自体に問題はないと思います。念のため、この質問に含めます。
だから、私は疑問に思っています:
- 大規模なプロジェクトで、Spring / AspectJがこの特定のクラスを検出するのを妨げている可能性のあるものはありますか?
- 春が質問のクラスを認識しているかどうかを確認する方法はありますか?
そして最後に、私が抽出できるコードは何でも(難読化を許してください):
構成XMLから:
<context:annotation-config />
<context:spring-configured />
<context:component-scan base-package="se.isydev" />
<context:component-scan base-package="se.istools" />
<aop:aspectj-autoproxy />
<context:load-time-weaver aspectj-weaving="on" />
<context:property-placeholder location="classpath:settings.properties" />
(...)
<bean class="com.company.ClassToBeWeaved"
scope="prototype">
<property name="injectedBean" ref="injectedBean" />
</bean>
そしてクラス自体:
@Configurable
public class ClassToBeWeaved {
private InjectedBean injectedBean;
@Required
public void setInjectedBean() { ... }
}
編集:
まあ、循環依存のために機能していなかったことがわかりました。ああ、私はレガシーコードに取り組むのが大好きです。それでも、私の元の質問は残っています。