Java 我的(AspectJ)jar无法识别jointcuts
环境:简单的Java独立应用程序。AspectJ罐子在里面 我有两个项目。第一个,比如“A”包含一个自定义方法范围注释和一个方面,当调用该方法时,该方面负责执行某些任务 注释:Java 我的(AspectJ)jar无法识别jointcuts,java,jar,aop,aspectj,Java,Jar,Aop,Aspectj,环境:简单的Java独立应用程序。AspectJ罐子在里面 我有两个项目。第一个,比如“A”包含一个自定义方法范围注释和一个方面,当调用该方法时,该方面负责执行某些任务 注释: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface AccessibleForRole { String value() ; } 这方面: public aspect AccessibleList
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AccessibleForRole {
String value() ;
}
这方面:
public aspect AccessibleListener {
pointcut verifyRole():
(
call(@AccessibleForRole * *())
);
before() : verifyRole() { // do something
}
}
我已经用这些注释/方面完成了一个jar文件
之后,我在项目a中创建了一个模型类。我用我的注释注释了一个方法,运行程序,我看到了捕获事件并处理的方面
public class Model {
@AccessibleForRole("admin")
public void addUserToApplication(){
System.out.println("in Model.addUserToApplication.");
}
}
它很好用……但是。。。。
如果我创建了第二个项目,即使用jar“a”创建的项目“B”,并使用我注释的方法(例如同一个模型)创建了新的类,那么似乎没有什么特别的事情发生。什么也抓不到
将来有没有可能在不需要重新编译的情况下,用AspectJ从一个jar项目中捕获一些东西
提前感谢,问题已解决。
多亏了Maven插件:
org.codehaus.mojo
aspectj maven插件
我说:
<aspectLibraries>
<aspectLibrary>
<groupId>myGroupId</groupId>
<artifactId>jarA</artifactId>
</aspectLibrary>
</aspectLibraries>
myGroupId
吉拉
在构建或运行时,jarA中定义的方面会正确截取项目B中的代码
我希望这会有所帮助。你到底想达到什么目的?
<aspectLibraries>
<aspectLibrary>
<groupId>myGroupId</groupId>
<artifactId>jarA</artifactId>
</aspectLibrary>
</aspectLibraries>