2012-08-05 228 views
1

我正試圖將現有的(web)項目遷移到roo。經過一些痛苦的時間遷移我的maven-settings roo開始喜歡我的項目,我可以運行我的單元測試。到現在爲止還挺好。Spring Roo和AOP

在我的項目中,我使用spring-aop來做一些安全性,所有代理都沒有編譯器。在eclipse中啓動我的webapp時,它告訴我,有些類缺失,f.e. org.aspectj.lang.annotation.Aspect。

當我查看我的classpath時,所有的aspectj.jar-stuff都從classpath中刪除。我想這是因爲Roo使用Aspectj-Compiler來添加AOP,並且不需要運行時編織。那麼遷移我現有的aop-code的正確方法是什麼?我應該告訴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> 
    

我真的不知道在哪裏所有的袋鼠,Maven的東西,奇蹟發生了對AspectJ中被刪除來自日食類路徑。那麼,我需要改變什麼才能在類路徑中保留這些罐子?

  1. 我的方面是這樣的,並適用於使用運行時編織時: 代碼:

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

我有什麼做的,告訴AspectJ來織在編譯時這方面?

問候, 邁克爾

回答

0

所以,我花時間對問題進行分析後,它似乎不是原產地規則本身從classpath中刪除AspectJ的罐子,但在Eclipse的插件正矢量2.7(這是由命令尊崇> roo項目)。我不知道這是一個bug還是一個功能,但是使用該插件創建一個eclipse-project刪除了那個jar。切換到2.8解決了問題。

因此,作爲答案: - >使用進一步運行時編織 - >神奇的發生在Eclipse的插件