問題タブ [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.
java - Eclipse: Web プロジェクトを AspectJ プロジェクトに変換し、AJDT プラグインを使用してそれを実行する方法は?
私がしたいこと:
- @Configured アノテーションを Spring で使いたい。AspectJ を有効にする必要があります。コンパイル時のウィービングに AJDT プラグインを使用すると、この問題が解決すると考えました。@Configured オブジェクトに注入されるはずだった依存関係にプラグインをインストールする前は、null のままでした。
私がやった事:
- Eclipse 3.4 用のAJDT: AspectJ 開発ツールプラグインをインストールしました。
- Web プロジェクトを右クリックして、AspectJ プロジェクトに変換しました。
- コンパイル時のウィービングを有効にしました。
機能しないもの:
- Tomcat 6 サーバーを起動すると、例外が発生します*。
その他の情報:
- プロジェクト プロパティの AspectJ Build および AspectJ Compiler 部分で何も構成していません。
- [プリファレンス] の下の JDT ウィービングは、ウィービングが有効になっていると表示します。
- プロジェクトのプロパティの下に、まだ Java ビルド パスと Java コンパイラがあります。そして、以前に構成したように見えます (上記の 2 つの新しいエントリは構成されていません)。
- 私の @Configured オブジェクトファイルのアイコンは、他のファイルのように見えます (つまり、あるべきだと思う側面などの兆候はありません)。ファイル名は (.aj ではなく) MailNotification.java ですが、AspectJ に Spring アノテーションを使用しているので、それでも機能するはずですか?
- Spring WebアプリケーションプロジェクトをAspectJプロジェクトに変換し、AJDTプラグインを使用してアスペクトをファイルに織り込む方法をすべてEclipse 3.4内で教えるチュートリアルなどは見つかりませんでした。そのようなものがそこにある場合、私はそれについて知りたいと非常に興味があります.
私が知りたいこと:
- ここからどこへ行く?Spring の @Configured アノテーションを使いたいだけです。AspectJも必要だと思う@Transactionalも使用しています。
- 可能であれば、自分のニーズが満たされる限り、AspectJ をできるだけ勉強したくありません。このテーマは興味深いようですが、巨大です。私がやりたいことは、上記の 2 つの Spring アノテーションを使用することだけです。
*** Tomcat 6 の起動時の例外:
spring - @Componentで注釈が付けられたアンマネージBeanの自動配線
@AutoWiredを使用して、@Componentで構成された非管理対象Beanを管理対象Beanに注入したいと思います。構成が正しいことは確かですが、何らかの理由で例外が発生し続けます。
エラーから、Bazクラスが見つからないと思いますが、理由はわかりません。XML構成のcontext:spring-configured要素がこれを可能にするはずだったと私は理解しています。また、適切なjarファイル(spring-weaving.jarおよびaspectjweaver.jar)を含めるようにしました。
これが私のセットアップの簡単な例です。
私のXML構成:
管理対象のBeanが1つあります。
そして、1つの管理されていないBean:
足りないものはありますか?
編集:ログにはインスタンス化されているBeanがリストされており、foo.Bazはその1つではありません。@Component注釈付きクラスを取得しない理由がわかりません。
spring - AOP アノテーションを使用して春にコードを挿入できますか?
次のようなことは可能ですか?
次のように効果的に実行されていますか?
Spring にはさまざまな種類の AOP サポートがあることは知っていますが、特定のメソッドの前または後に実行されるように注釈が付けられた AOP コードを見つけることができたのは最高でした。逆を行い、変更する必要があるコードに注釈を付けたいと思います。
最終的には、メソッド内で上記のチェックを行うだけで済みますが、注釈を使用する方法では追加のドキュメントが提供されるため、ドキュメントをコードと同期させなくても、ユーザーが特定の権限を必要としていることを明確にできます。
java - 春-@Transactional-バックグラウンドで何が起こりますか?
メソッドにアノテーションを付けたときに実際に何が起こるか知りたい@Transactional
ですか?もちろん、Springがそのメソッドをトランザクションでラップすることは知っています。
しかし、私には次の疑問があります。
- Springがプロキシクラスを作成すると聞きましたか?誰かがこれをもっと深く説明できますか?そのプロキシクラスには実際に何が存在しますか?実際のクラスはどうなりますか?そして、Springが作成したプロキシクラスをどのように見ることができますか
- また、Springのドキュメントで次のことを読みました。
注:このメカニズムはプロキシに基づいているため、プロキシを介して着信する「外部」メソッド呼び出しのみがインターセプトされます。つまり、「自己呼び出し」、つまりターゲットオブジェクト内のメソッドがターゲットオブジェクトの他のメソッドを呼び出すと、呼び出されたメソッドに
@Transactional
!のマークが付いていても、実行時に実際のトランザクションが発生することはありません。
出典:http ://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
自己呼び出しメソッドではなく、外部メソッド呼び出しのみがトランザクションの下にあるのはなぜですか?
spring - Compile Time Weaving を使用した Spring @Configurable の起動パフォーマンス
これはスタック オーバーフローに関する私の最初の質問なので、親切にお願いします。
私はアプリを実行しています
- 春 2.5.x
- 設定可能な注釈
- コンパイル時ウィービング (CTW)
- メイヴン
- Eclipse/ajdt
私はCTWを使用していますが、すべて正常に動作します。しかし、注釈付きクラスを初めてインスタンス化すると、非常に時間がかかります。2 回目は非常に高速です。
最初の呼び出しのプロファイラー スタック トレースを見ると、時間の 93% が org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(Method) によって使用されていることがわかりました
2 番目の呼び出しのスタック トレースでは、このメソッドで使用される時間はわずか 1% です。さらに悪いことに、最初の呼び出しは 2 番目の呼び出しの約 10 倍の時間がかかります。
CTWではウィーバーはもう必要ないと思っていたので、疑問に思っていました。
しかし、Spring は、誰かがこのクラスで new を呼び出すとすぐに、プロトタイプ化された Bean の分析を開始するようです。これは、aspectj ウィーバーを使用して何を行う必要があるかを分析し、次の呼び出しのためにこのプロセスを高速化する準備をします。
注釈付きクラスを初期化する最初の呼び出しを高速化した経験のある人はいますか?
これは私のpomのスニペットです:
java - Spring AOP アスペクトのテスト
アスペクトを記述するとき、それらが一致すること、および必要なときに呼び出されることをどのようにテストできますか?
@Aspect
Spring 2.5.6 で宣言を使用しています。
それ以外の場合は、抽出されてテストされる機能は気にしません。
java - 春のアスペクト
春にaspectjを自動配線しようとすると、次のエラーが発生します
私のappContext.xmlエントリは.....のようになります
.....
このエラーを削除するにはどうすればよいですか.. 残念ながら、サイトhttp://forum.springsource.orgはネットワークファイアウォールによってブロックされています.. 迅速なヘルプをいただければ幸いです。
行を追加すると、次のようになります
java - メソッドのプロファイリングを行う (基本実行時間) Spring AOP で
メソッドの実行時間を簡単にプロファイリングし、パッケージ フィルターによってプロファイリングする対象を選択できる機能またはソフトウェアを探しています。
プロファイラー 101 ですね。私は TPTP プロファイラーを使用しています。しかし、私はそれに満足していません。率直に言って、私はそれがどのように機能するのか理解していません。また、アプリケーションをプロファイリングする (プロファイリング モードでサーバーを起動する) と、何もしないのに永遠に時間がかかります。(まあ、私が期待するものではありません:実行時間の単純な出力)
そのため、システム時間でプロファイリングを自分で行います (メソッドの最初と最後に行を追加します)。それはそう悪くはありません。
私の質問は、Spring AOP でメソッド呼び出しの前後のシステム時間を測定したいのですが、指示をいただけますか? それは良い/悪い考えですか?コード ベースは非常に大きく、ユニット テストも多くありません。「危険」ではないでしょうか。
私はコードを求めているわけではありません。この種のリンクで自分でできると思います: http://static.springsource.org/spring/docs/2.5.x/reference/aop.html
しかし、優れたチュートリアル (これまで AOP をやったことがなく、概念を知っているだけ) があれば、それを利用します。
java - Hibernate 遅延初期化ヘルプ
休止状態を使用して削除しようとすると問題が発生します。削除しようとすると、子が存在し、FK 違反があるという例外が発生します。子も削除したいのですが、削除が連鎖していないようです。この問題の修正を約 1 週間試みた後、HibernateInterceptor を使用してセッションを開いたままにして、子をロードできるようにする必要があることを読みました。今これをやろうとすると、次のエラーが発生します。
これが私のマッピングファイルからの抜粋です:
以下は、アプリケーション コンテキストからの抜粋です。
私のDAOのメソッドは次のとおりです。
私は自分が間違っていることを本当に知りません。非常に複雑なスキーマはありません。子 (国) になるテーブルは 1 つだけです。これを修正するために私ができることはありますか?
java - 分野横断的な関心事に関する興味深い AOP の質問はありますか?
これに似たメソッドを持つ一連の DOA を考えてみましょう
現在、すべてのドメイン pojo ( Dom
) にはsessionId
プロパティがあり、ドメイン オブジェクトのすべての挿入、更新、または削除に対して asessionId
を渡す必要があるsetSessionId(Long sessionId)
ため、誰が何を行うかを知ることができます。しかし、これは私たちのすべてのデータアクセスを横断しているようであり、AOP はaまたはアドバイスsessionId
のいずれかに挿入するための優れたツールになると思います。これは実際に実現可能ですか?DAO はほとんどが Hibernate ベースであり、Spring がいくつかあります。@Before(JoinPoint)
@Around(ProceedingJoinPoint)
StoredProcedure