2017-09-07 8 views
0

私はSpring AOPをSpring Boot(1.5.6)プロジェクトに追加しようとしています。以前は他のプロジェクトでやっていましたので、使い方に慣れています。私は注釈を作成し、それをポイントカットとして使用しました。今回私が直面している問題は、アドバイスされた豆がプロキシされていないことです。したがって、私の側面は引き金になっていません。 私がプロジェクトに以下を追加しました:Spring AOPの自動プロキシが機能しない

  • spring-boot-starter-aop
  • @Aspect@Component
  • @Before("@annotation(com.xyz.MeasureThis)")
  • と最後ではなく、少なくともサービスメソッドで注釈を付け面における方法でマークされたBeanを@MeasureThis

サービス方法はから呼び出されます。私がそれをデバッグすると、注入されたサービスBeanがまったくプロキシされていないことがわかります。

問題は、私が考慮に入れることを忘れる可能性があるトリッキーなことがあるかどうかです。私はどのようにautoproxyingが行われているのか分からないので、私が気づいていないことがあるかもしれません。

新しいプロジェクトを最初から作成することで、それを機能させることができましたが、既存のプロジェクトでは自分が望むことをしたくありません。私はそれが一般的な質問の多くのように任意のコードサンプルを投稿していないよ。

+0

は間違いなく春にサービスメソッドです豆? Springは、実際のAspectJとは異なり、Beanとして管理していないオブジェクトを代理しません。 – slim

+0

PS一般的な質問かどうか、とにかくMVCEを作成する必要があると思います。それはあなたが問題を見つけるのを助けるかもしれません。 – slim

+0

あなたの最初のコメントに関して@slim:そうです。あなたの2番目のコメントのために:私は最初から春のブートプロジェクトを作成しました。私が間違っていることがあるかどうかを確認するだけで、うまくいきました。実際のサンプルコードを投稿できますが、それは役に立たないでしょう。問題はどこか深いところ、つまり依存関係やいくつかの競合する設定であると私は信じています。 – Balazs

答えて

0

私は( "& &実行(* *(..))@Annotation(com.xyz.MeasureThis)") @Beforeにポイントカットを変更しようと思います

+0

aspectjweawerはスターターに付属しており、Spring Boot apps AFAIKではアノテーションは必要ありません。 – Balazs

+0

あなたの答えを完全に変更することは意味がないと思うので、無意味なことに私のコメントをつけることは正しいことです...しかし、とにかくあなたの編集された答えに関して:ポイントカットを抽出することはオプションです。 – Balazs

+0

それはポイントカットを抽出するのではなく、条件を結合するためです – vRaptor

関連する問題