spring 4.0.7 では、次の状況を考慮してください。
Eclipselink の場合、load-time-weaver を使用します。そのため、@EnableSpringConfigured と @EnableLoadTimeWeaving を同時に使用して、Springs @Configurable アノテーションを試してみました。
これは完全に機能し、Spring-Bean は構築中に POJO に完全に注入されます。これらの POJO の検証に関するコードを Bean の他の場所ではなく、これらの内部に保持したいので、この機能は役に立ちます。
Spring コンテキストの一部には、一部のパッケージにローカルであり、そこでのみ使用されるため、インターフェイスを実装しない Bean が含まれています。たとえば、FooLogicBean はその 1 つです。これが別の Bean に注入され、何らかのパフォーマンス測定アスペクトのような Spring-AOP-Aspect (not-aspectj) が実行パスにある場合、Spring は FooLogicBean の CGLIB 自動プロキシを作成し、それを注入します。これは完全に機能し、完璧に機能します。
FooLogicBean ( fooLogicBean.doValidate(myPojo); など) のメソッドのパラメーターとして @Configurable でアノテーションが付けられた POJO を実際に使用したい場合、それぞれ CGLIB プロキシとして問題が発生します。この場合、いくつかの重要な魔法が、その POJO がアスペクト j (Spring-aspects の AnnotationBeanConfigurerAspect) を介して織り込まれるのを阻止します。前述の doValidate() メソッドの呼び出しに関係なく、コードのどこにも織り込まれることはありません。
その POJO を FooLogicBean 内に作成するが、それをメソッド パラメーターとして使用しない場合、@Configurable により再び織り込まれます。
Autoproxy 作成コードを知らなくても、そのクラスが既に spring-aop で使用されている場合、なんらかの派手なマーキングルーチンが、aspectj によってクラスが検出されるのを妨げていると想定します。この場合のuseはAccessを意味します。
そのようなあいまいな星座で実験し、その解決策を知っている人はいますか?
前もって感謝します!