我正在尝试将现有的(网络)项目迁移到 roo。在迁移了一些痛苦的小时后,我的 maven-settings roo 开始喜欢我的项目,并且我能够运行我的单元测试。到现在为止还挺好。
在我的项目中,我使用 spring-aop 来做一些安全性,全部使用代理,没有编译器。在 Eclipse 中启动我的 webapp 时,它告诉我,缺少某些类,例如 org.aspectj.lang.annotation.Aspect。
查看我的类路径时,所有aspectj.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>
我真的不知道从 Eclipse 类路径中删除 aspectj 的所有 roo-maven-stuff 中的魔力在哪里。那么我必须改变什么才能将这些罐子留在类路径中?
我的方面看起来像这样,并且在使用运行时编织时有效:代码:
@Aspect public class SecurityAspect { @Around("execution(@AuthorizedMethod public * de.diandan.web.controller.*.*(..))") public Object checkRights(ProceedingJoinPoint jp) throws Throwable { }
我该怎么做才能告诉aspectj在编译时编织这个方面?
问候,迈克尔