問題タブ [spring-aop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2746 参照

java - AspectjはSpringFrameworkのすべてのイベントをキャッチしませんか?

私のプロジェクトはSpringFramework2.5.4に基づいています。そして、いくつかのコントローラーにアスペクトを追加しようとしています(私はaspectj 1.5.3を使用しています)。

application-servlet.xmlで自動プロキシを有効にし、次の行をxmlファイルの最後に貼り付けました。

作成されたアスペクト:

私のコントローラー:

アスペクトアドバイザーでブレーキポイントを設定し、コントローラーを呼び出すと、afterHandleRequest()のみがキャッチされ、afterRebildThumbnail()はキャッチされません。何が間違っていましたか?

ノート

私は、SOベータにアクセスできない友人に代わってこの質問をしていますが、それが何であるかについての手がかりがありません。

編集

Cheekysoftに感謝します。しかし、問題はまだ解決していません。

0 投票する
1 に答える
4519 参照

spring - Spring AOP (または AspectJ) を使用して複数のアスペクトの優先度を定義/構成する方法

ビジネス サービス クラスで Spring AOP (AspectJ アノテーションと組み合わせて) を使用して、複数のアスペクト (1 つは @Before で、もう 1 つは @Around) を定義することができました。

現在、それらは 1 つずつ (順番に) 呼び出されています。ただし、アスペクトを呼び出す優先度をどのように定義できるか、どこで定義できるかを知りたいです。

Spring AOPに関して私を案内してください。Spring 2.5.3 フレームワークを使用していることに注意してください。

0 投票する
9 に答える
29092 参照

spring - aopを使用した場合のパフォーマンスへの影響

アプリケーションの横断的側面(現時点ではセキュリティとキャッシング)にSpringaopを使用し始めました。

私のマネージャーは、このテクノロジーのパフォーマンスへの影響を心配していますが、そのメリットは十分に理解しています。

私の質問ですが、aop(特にSpring aop)の使用によって引き起こされるパフォーマンスの問題に遭遇しましたか?

0 投票する
2 に答える
7548 参照

java - Spring AOP でポイントカットが機能しない

Spring AOP を使用してロギングを実装するために、次の簡単な手順に従いました。しかし、それは機能していないようです。どんな助けでも役に立ちます

1) MyLoggingAspectクラスの作成

}

2)ログが必要なクラス( TixServiceImpl )を作成しました

3) spring-aspectj.xmlファイルを作成

4) 簡単なテスト クライアント ( TixClient )を作成しました。

5)次の出力が得られます

0 投票する
1 に答える
1554 参照

java - サードパーティ クラスの AOP

私は春にAOPを実際の問題なく使用しましたが、主にトランザクション管理に使用されており、魅力的です。

私の質問はこれです...これまでに私が見た AOP の唯一の例は、自分で作成したクラスをポイントカットすることです。データベース接続クラスなど、サードパーティ ライブラリ内のクラスをポイントカットすることは可能ですか。コンテキストは、いくつかのログを作成し、Oracle データ ソースがデータベースへの呼び出しを実行したときに情報を収集したいということです。残念ながら、これは Oracle クラス ファイルのスタックに含まれています。SQL が実行されたときに、このクラス/メソッドをどのようにポイントカットしますか?

0 投票する
6 に答える
14111 参照

database - 監査証跡の実装 - Spring AOP 対 Hibernate Interceptor 対 DB トリガー

これに関するディスカッション スレッドをいくつか見つけましたが、3 つのメカニズムすべてを 1 つのスレッドで比較するものはありませんでした。

だからここに私の質問があります...

DB の変更を監査する必要があります。ビジネス オブジェクトへの挿入\更新\削除です。

これを行うには3つの方法を考えることができます

1) DBトリガー

2) ハイバネート インターセプター

3) 春の AOP

(この質問はSpring\Hibernate\RDBMSに固有のものです-これはJava\c#または休止状態\n休止状態には中立だと思いますが、回答がC++またはJavaまたは休止状態の特定の実装に依存している場合-指定してください)

これらの戦略のいずれかを選択することの長所と短所は何ですか?

実装の詳細については尋ねていません。これは設計上の議論です。

これをコミュニティ wiki の一部として作成できることを願っています。

0 投票する
3 に答える
9497 参照

spring - SpringとAspectJを使用した構成可能vsコンポーネント

AspectJを使用する場合、@Configurableではなく@Componentを使用する理由。

@Transactionalサポート、自己呼び出しの側面、およびJPAエンティティへのインジェクションのためのSpringとAspectJのセットアップがあります。これはうまくいきます。

インジェクションが必要なほとんどのクラスに@Componentを使用しているため、依存関係にインジェクションする必要があります。または、できない場合は、ApplicationContextを挿入してから、最後の手段としてgetBean()を使用します。そして、インジェクションが必要なJPAエンティティ(Hibernate)に対してのみ@Configurableを予約しています。また、テストの作成を容易にするために、jUnitテストに@Configurableを使用し始めました。これもうまくいきます。

しかし、私は興味があります。AspectJが、構築方法に関係なく、@ Configurableアノテーションを使用して何かを自動注入(ビーン化)している場合。getBean()、new()、@Autowired。すべてのBeanに@Configurableの使用に切り替えないのはなぜですか?次に、アプリケーションコンテキストとgetBean()を完全に廃止し、注入できないクラスをnew()だけにすることができます。

XMLBeanの構成については触れていません。私はそれを恥ずかしがりませんが、このプロジェクトはたまたま何も必要としません。テスト時に、コンストラクターまたはセッターが依存関係を注入するだけです。非常に簡単。

0 投票する
4 に答える
36279 参照

java - Spring の @Configurable の AspectJ コンパイル時の織り込みが機能しないのはなぜですか?

更新 5:最新の Eclipse ベースの最新の Spring ToolsSuite IDE をダウンロードしました。プロジェクトを Maven プロジェクトとしてインポートすると、Eclipse/STS はプロジェクトのビルドに Maven ゴールを使用しているように見えます。これは、AspectJ が最終的に Eclipse で正しく動作することを意味します。

更新 4: Eclipse のメカニズムを効果的にバイパスして、コンパイル時のウィービングに Maven + AspectJ プラグインを使用するだけになりました。

更新 3: AspectJ の Eclipse プラグインが、Tomcat に正しく公開する Eclipse の機能を壊しているようです。プロジェクトの AspectJ 機能を削除することによってのみ、プロジェクトを適切に公開できるようになります。とてもうるさい。

更新 2:これが Eclipse で動作するようになりました。これを言うのは非常に不快ですが、EclipseまたはMavenビルドからどのように機能するようになったのかわかりません。実行時の問題ではなく、コンパイルの問題のようです。

更新 1: Maven ビルドを介して動作するようになったようですが、方法がわかりません。Eclipse はまだ動作しません。pom.xmlで変更したのは、これらの (重要でない?) 構成パラメーターを追加したことだけです。

私は実際に、すべてが一貫して機能しないこの問題が繰り返されることを心配しています。詳細がわかり次第、この質問を更新していきます。

Eclipse に関しては、組み込みたいバイナリ アスペクト (この場合はspring-aspects.jar ) をクラスパスからコピーすることで、ある程度の進歩を遂げました。次に、この外部 jar をAspect Pathに追加します。これを行った後、Eclipse はコード内に AspectJ マーカーを適切に表示します。Mavenプラグインを介してMavenによって維持されているJavaビルドパスにspring-aspects.jarをそのままにしておくことができないのは面倒です。ただし、何らかの理由で、バイナリ アスペクトがAspect Pathに明示的に追加されない限り、AspectJ プラグインはバイナリ アスペクトを認識しません。


元の投稿: @Configurable は、Spring の外部でインスタンス化されたオブジェクトに依存関係を注入できるようにする Spring アノテーションです (たとえば、Hibernate またはいくつかの Factory クラスによって)。

以前、この注釈をロード時の織りで使用していましたが、ほとんど機能していました。時々、起動しても何も注入されませんでした。この問題により、この StackOverflow questionが発生しました。多くの回答はありませんでしたが、信頼性が高いため、代わりにコンパイル時のウィービングを試すことを提案する人がほとんどでした。

Eclipse および Maven 用の AspectJ プラグインをインストールしました。これらは両方とも、適切にコンパイルされたクラスのように見えるものを生成します。AspectJ をコンパイルする前に、クラスの 1 つをテキスト エディターで開いたところ、AspectJ への参照が見つかりませんでした。AspectJ のコンパイル後に開いたところ、Eclipse と Maven の両方で生成されたバージョンにorg.aspectj.weaver.MethodDeclarationLineNumberへの参照があります。これが、適切にコンパイルされていると想定する理由です。問題は、デプロイされると、依存関係が注入されないことです。

私のSpring applicationContext.xmlには以下が含まれています:

@Configurable とマークされたクラスが DI を実行するために必要なのは、上記のすべてですか? ロード時ウィービングからコンパイル時ウィービングへの変換中に、META-INF/aop.xml<context:load-time-weaver />applicationContext.xmlから削除し、Spring の Tomcat ウィーバーをcontext.xmlから削除しました。

この問題をさらに調査するにはどうすればよいですか? 考えられる原因は何ですか?