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

    xiaoxiao2025-11-27  10

    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
    最新回复(0)