この問題の理解を深めたいと思っています。回避策は非常に簡単です。つまり、プロキシ/アドバイスがラップされていない別のクラスに構成データを移動しますが、これをよりよく理解することは、将来的に他の関連する問題を回避するのに役立つと思います。提供することができる。
Spring 3.1.0.RELEASE を Spring STS と vFabric tc サーバーで使用しています。@Controller クラスを使用して基本的な小さな REST サーバーを実装しました。それはすべて素晴らしいことですが (本当にそうです)、@Controller も @Transactional であり、それとロード時間の織り込みと vFabric tc サーバーの間で、@Value が壊れます。
@Controller
@RequestMapping("/hello")
public class MyAPI {
@Value("${my.property}")
private String prop;
...
@Transactional
handleRequest(...) ...
}
プロパティ ファイル app.properties:
my.property = SUCCESS
これは JUnit の下で正常に動作し、テストは "SUCCESS" に設定された prop を持つ MyAPI オブジェクトを取得します。しかし、アプリが vFabric に読み込まれると、読み込み時間の織り込みとプロキシが発生すると推測されます。何が起こっても、2 つの MyAPI インスタンスが作成されます。1 つは prop == "SUCCESS" で、もう 1 つは (残念ながら http 要求を処理するものです) prop == "${my.prop}" です。
要するに、私はこれを魔法の失敗と呼んでいます。これは、AOP のようなものを使用する際の私の最大の懸念事項です。STS を使用しても、問題の背後にある原因を追跡する方法や、これが重大なバグであるかどうかを判断する方法がわかりません。バグだとしたらSpringのバグなのか、AspectJなのか、ロードタイムウィーバーなのか、vFabricのバグなのかわからないので、どこにバグレポートを提出すればいいのかもわかりません。
したがって、これを理解するための助けをいただければ幸いです。ありがとう。