1

既存の (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 をコンパイル時のウィービングに移行する必要がありますか?

答えは何ですか、どうすればいいですか?

  1. 私の 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をクラスパスに残すには何を変更する必要がありますか?

  1. 私のアスペクトは次のようになり、runtime-weaving を使用すると機能します: コード:

    @Aspect
    public class SecurityAspect {
        @Around("execution(@AuthorizedMethod public * de.diandan.web.controller.*.*(..))")
        public Object checkRights(ProceedingJoinPoint  jp) throws Throwable {
        }
    

コンパイル時にこのアスペクトを織り込むようにaspectjに指示するにはどうすればよいですか?

よろしく、マイケル

4

1 に答える 1

0

そのため、時間をかけて問題を分析した後、クラスパスからspectj jarを削除するのはRoo自体ではなく、バージョン2.7のeclipse-Plugin(コマンド> rooプロジェクトによって参照される)のようです。それがバグなのか機能なのかはわかりませんが、そのプラグインでEclipseプロジェクトを作成すると、そのjarが削除されました。2.8に切り替えると問題が解決しました。

答えとして:->さらにランタイムウィービングを使用する->魔法はeclipse-pluginで起こります

于 2012-08-25T06:13:38.143 に答える