1

AspcetJでSpringAOPを使用しているアプリケーションがあり、Spring自動プロキシで使用できるように変換したいと思います。つまり、コードベースを調べて、同じクラス内の他の@Transactionalメソッドを呼び出しているためプロキシを経由しない@Transactionalメソッドの呼び出しと、プライベートメソッドにある@Transactionalメソッドを探す必要があります。

ApsectJでは機能するが自動プロキシでは機能しない@Transactionalのすべての使用法を自動的に見つけるために、どのツールまたは手法を使用できますか?

4

2 に答える 2

2

さて、あなたはすでにAspectJを使用しているので、AspectJを使用して、そのような制御フローを動的に調べてログに記録してみませんか?したがって、分析ツールとしてAspectJを使用することで、AspectJを取り除くことができます。;-)

于 2013-02-22T22:24:30.147 に答える
1

私はこれらを箱から出して見つけるツールを知りません。したがって、おそらく独自に作成する必要があります。しかし、それは些細なことではありません。

アノテーション付きのメソッド/フィールド/クラスを処理するアノテーションプロセッサを作成できます。作成して実行する方法については、APTドキュメントを参照してください。(Java 6では、aptがjavacに組み込まれていることに注意してください。)

ただし、どのメソッドが他のどのメソッドを呼び出すかを見つけることは非常に困難です。同じクラスのメソッドについて話しているので、少し簡単です。これにはバイトコード分析を使用できます(関連するライブラリについては、この投稿invokevirtualを参照してください)。クラスのメソッドのと命令を解析し、アノテーションがinvokeinterface付いているものと一致するかどうかを確認します。@Transactional

于 2013-02-19T18:30:49.443 に答える