aspectJ——类属性访问切点捕获
Person.java
package aspectjtest;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void say(){
System.out.println("i am a person");
}
}
PersonAspect.aj
public aspect PersonAspect {
pointcut persontest() : call(void aspectjtest.Person.say());
before() : persontest(){
System.out.println("aspect person--------before");
}
pointcut constructAspect() : call(aspectjtest.Person.new());
before():constructAspect(){
System.out.println("Person class Construct");
}
pointcut getNamePointcut() : get(String aspectjtest.Person.name);
before():getNamePointcut(){
System.out.println("----- before get name");
}
after() returning(String value):getNamePointcut(){
System.out.println("-----after get name,the name is " + value );
}
pointcut setNamePointcut(String newValue) : set(String aspectjtest.Person.name)
&&args(newValue);
before(String newValue):setNamePointcut(newValue){
System.out.println("----- before set name and the newValue is " + newValue);
}
after(String newValue) :setNamePointcut(newValue){
System.out.println("-----after set name,the name is " + newValue );
}
}
测试程序:
package aspectjtest;
public class MyClass {
public void foo(int number,String name){
System.out.println("inside foo(int,String)" + number + '\t' + name);
}
public void test(int number,String name){
System.out.println("inside test(int,String)" + number + '\t' + name);
}
public static void main(String[] args){
Person p = new Person();
p.setName("xueyou");
System.out.println(p.getName());
/*Person p2 = new Student();
p2.say();*/
}
}
运行结果:
转载请注明原文地址: https://ju.6miu.com/read-1304451.html