您的位置:首页 > 编程语言 > ASP

aspectJ——类属性访问切点捕获

2016-08-15 17:56 197 查看

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();*/
}

}
运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐