Java 如何加上「;“之后”;AspectJ中的方法?
我试图理解AspectJ是如何工作的。首先,我想在之后添加一个名为Java 如何加上「;“之后”;AspectJ中的方法?,java,aspectj,Java,Aspectj,我试图理解AspectJ是如何工作的。首先,我想在之后添加一个名为的方法,使用AspectJ调用通常的现有方法 myClass可以在下面看到: package myclass; public class MyClass { public void method1(){ System.out.println("methode1 is called"); } public void method2(String str){ System.o
的方法,使用AspectJ调用通常的现有方法
myClass可以在下面看到:
package myclass;
public class MyClass {
public void method1(){
System.out.println("methode1 is called");
}
public void method2(String str){
System.out.println("methode2 is called " + str);
}
}
在方法2之后,我想显示一些文本消息和参数str
:
package myclass;
public aspect aspect2 {
pointcut func(String str):
call(myclass.MyClass.method2(String)) && args(str);
after(String str) : func(str) {
System.out.println("Aspect from method2: " + str );
}
}
最后调用它的是main类entrypoint
:
package myclass;
public class entrypoint {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyClass mc = new MyClass();
mc.method1();
mc.method2("zzz");
}
}
作为输入,它显示:
methode1 is called
methode2 is called zzz
它不显示method2:zzz中的方面,因此方面不起作用。
我做错了什么?我将我的评论作为@kriegaex ask的答案发布。
代码中有一些错误:
1.在切入点中,您忘记添加返回类型,即使它是void,您也应该指定它。
2.在建议中,在(字符串str)returning:func(str)
在你的切入点中添加返回类型(void include),并在建议中添加返回后的返回(String str)returning:func(str)@JEY谢谢你,先生,这很有效@JEY,请将您的评论转换为OP可以接受的答案,以便结束此问题。
package myclass;
public aspect aspect2 {
pointcut func(String str): call(void myclass.MyClass.method2(String)) && args(str);
after(String str) returning : func(str) {
System.out.println("Aspect from method2: " + str );
}
}