AspectJ を使用して織り込まれたクラスで @Configurable を使用し、Spring に @Value で注釈が付けられたフィールド/メソッドの値をロードさせることは可能ですか?
@Autowired や @Resource などで可能であることはわかっています...他にはありますか。
例えば
@Configurable
public Class MyObj{
@Value("$(my.prop)")
private String aField;
public String getAField(){
return aField;
}
}
そして、次のようなものがあります
public aMethodSomewhereElse(){
MyObj obj = new MyObj()
assertNotNull(obj.getAField());
}
MyObj
オペレーターで作成し、new
スプリングでアノテーションを処理できるようにする代替手段はありますか?
- 編集: -
new
@Autowired を使用するときにこれを行うことは可能です。Springと AOP を使用した Hibernate と JPA のものを見てください...私は過去に Java コードのプロファイリングを行うためにこれを使用しました。しかし、ここで答えを見つけたいと思っていた完全な例をモックアップする前に、SPEL と @Value を使用したいと思っています。参考までに-Springマニュアルでこれを行うことが可能であるとさえ信じていない場合、私が知りたいのは、同じスコープで@Valueアノテーションを使用できるかどうかです...
Spring コンテナーは、アプリケーション コンテキストで定義された Bean をインスタンス化して構成します。適用する構成を含む Bean 定義の名前を指定して、既存のオブジェクトを構成するよう Bean ファクトリに依頼することもできます。spring-aspects.jar には、この機能を利用して任意のオブジェクトの依存性注入を可能にするアノテーション駆動型のアスペクトが含まれています。
と...
もちろん、注釈を単独で使用しても何も起こりません。アノテーションの存在に作用するのは、spring-aspects.jar の AnnotationBeanConfigurerAspect です。本質的に、アスペクトは「 @Configurable でアノテーションが付けられたタイプの新しいオブジェクトの初期化から戻った後、アノテーションのプロパティに従ってSpringを使用して新しく作成されたオブジェクトを構成する」と述べています。このコンテキストでは、初期化とは、新たにインスタンス化されたオブジェクト (たとえば、'new' operator でインスタンス化されたオブジェクト) と、(readResolve() などを介して) 逆シリアル化中の Serializable オブジェクトを指します。
http://static.springsource.org/spring/docs/3.0.0.RC2/reference/html/ch07s08.html
乾杯。