Spring之AOP
A类为普通Bean,B类为切面,在获取A的实例后执行其play方法时,Spring会自动调用B中设置的切点。
注解方式配置切面
新建A类:
src/test1/A.java
声明其为Component,这就是一个普通的Bean。
新建B类作为切面,除了被声明为切面之外,它与普通Bean没有区别:
src/test1/B.java
连接点不止before和after两个。参数中"*"代表任意返回类型,".."代表任意参数类型。这里的注解配置意为,分别在test1.A.play()方法调用之前和之后调用B类中的相应方法。
使用Java配置,新建Config类:
src/test1/Config.java
配置类除了开启配置和自动扫描,还使用EnableAspectJAutoProxy切面的自动代理。
新建场景类Run,用于测试切面:
src/Run.java
运行程序可看到before和after分别在play前后打印。
XML方式配置切面
使用xml配置的方式,类中就不需要任何注解。
新建包test2,新建A类:
src/test2/A.java
新建B类:
只是删掉了注解。不再需要Config.java,取而代之的是config.xml:
src/config.xml
这里的配置效果和注解配置是一样的。最后是运行类Run:
src/test2/Run.java
运行效果一致。
参考: