既存の (Web) プロジェクトを roo に移行しようとしています。私のmaven-settings rooを移行するのに苦労した後、私のプロジェクトが好きになり始め、ユニットテストを実行できるようになりました。ここまでは順調ですね。
私のプロジェクトでは、Spring-Aop を使用してセキュリティを確保していました。すべてプロキシを使用し、コンパイラは使用しませんでした。Eclipse 内で webapp を起動すると、いくつかのクラスが欠落していることがわかります。fe org.aspectj.lang.annotation.Aspect.
私のクラスパスを見ると、すべてのspectj.jar-stuffがクラスパスから削除されています。Roo が Aspectj-Compiler を使用して AOP を追加し、ランタイム ウィービングの必要がないためだと思います。では、既存の aop コードを移行するための正しいアプローチは何ですか? Roo/Maven にすべての aspectj-jar を webapp-lib フォルダーに追加するように指示する必要がありますか、それとも aop をコンパイル時のウィービングに移行する必要がありますか?
答えは何ですか、どうすればいいですか?
私の pom.xml には、これらの依存関係があります: コード:
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${aspectj.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency>
roo-maven-stuff のすべての魔法がどこで発生し、aspectj が eclipses クラスパスから削除されるのか、私は本当に知りません。では、そのjarをクラスパスに残すには何を変更する必要がありますか?
私のアスペクトは次のようになり、runtime-weaving を使用すると機能します: コード:
@Aspect public class SecurityAspect { @Around("execution(@AuthorizedMethod public * de.diandan.web.controller.*.*(..))") public Object checkRights(ProceedingJoinPoint jp) throws Throwable { }
コンパイル時にこのアスペクトを織り込むようにaspectjに指示するにはどうすればよいですか?
よろしく、マイケル