编写切面类和切面方法: package testSpring.business.proxy; import org.aspectj.lang.annotation.Pointcut; /** * DynamicProxy : * @author xuejupo jpxue@travelsky.com * create in 2016-2-16 下午2:45:26 */ public class DynamicProxy { public void doBefore(){ System.out.println("doBefore"); } public void doAfterReturning(){ System.out.println("doAfterReturning"); } public void doAfter(){ System.out.println("doAfter"); } public void doAfterThrowing(){ System.out.println("doAfterThrowing"); } public void doAround(){ System.out.println("doAround"); } } 然后,为注册的MyBean定义一个切入点(就是图文的第二步,在xml文件中定义切入点):<!-- 为userBean定义一个切面 --> <bean id="aoc" class="testSpring.business.proxy.DynamicProxy" /> <aop:config> <aop:aspect id="aspet" ref="aoc"> <aop:pointcut id="cut" expression="execution (* testSpring.business.bean.MyBean.*(..))" /> <aop:before pointcut-ref="cut" method="doBefore" /> <aop:after-returning pointcut-ref="cut" method="doAfterReturning" returning="obj"/> <aop:after pointcut-ref="cut" method="doAfter" /> <aop:after-throwing pointcut-ref="cut" method="doAfterThrowing" /> <!-- <aop:around pointcut-ref="cut" method="doAround" /> --> </aop:aspect> </aop:config>然后执行测试代码:public void testPrintObject7(){ // System.out.println(System.getProperty("java.class.path")); //读取配置文件(将配置文件中的bean加载进内存) ApplicationContext ctx = new ClassPathXmlApplicationContext("/testSpring/resources/applicationContext_proxy.xml"); //获取的实例 IPrint bean = (IPrint)ctx.getBean("userBean"); //调用方法 bean.printObject(); }结果:
doBefore 打印对象MyBean: doAfterReturning doAfter
spring面向切面编程
最新推荐文章于 2022-01-21 10:28:49 发布