不带参数的:
/** * 日志类 */ public class MoocAspect { public Object around(ProceedingJoinPoint pjp){ Object obj=null; try { System.out.println("MoocAspect around 1."); obj=pjp.proceed(); System.out.println("MoocAspect around 2."); } catch (Throwable throwable) { throwable.printStackTrace(); } return obj; } public Object aroundInit(ProceedingJoinPoint pjp,String bizName,int times){ System.out.println(bizName+" "+times); Object obj=null; try { System.out.println("MoocAspect aroundinit 1."); obj=pjp.proceed(); System.out.println("MoocAspect aroundinit 2."); } catch (Throwable throwable) { throwable.printStackTrace(); } return obj; } }
/** * 业务类 */ public class AspectBiz { public void biz(){ System.out.println("AspectBiz biz."); } public void init(String bizName,int times){ System.out.println("AspectBiz init:"+bizName+" "+times); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 我们要插入的日志等--> <bean id="moocAspect" class="com.mr.three.MoocAspect"></bean> <!--业务bean--> <bean id="aspectBiz" class="com.mr.three.AspectBiz"/> <aop:config> <!-- 用到哪个处理类--> <aop:aspect id="moocAspectAOP" ref="moocAspect"> <!-- 切点,要插入到什么地方,expression可以为包,类和方法--> <aop:pointcut expression="execution(* com.mr.three.*Biz.*(..))" id="moocPointcut"/> <aop:around method="around" pointcut-ref="moocPointcut"/> <aop:around method="aroundInit" pointcut="execution(* com.mr.three.AspectBiz.init(String,int)) and args(bizName,times)"/> </aop:aspect> </aop:config> </beans>
@Test public void AroundInitTest(){ ApplicationContext context=new ClassPathXmlApplicationContext("spring-injection.xml"); AspectBiz biz=(AspectBiz)context.getBean("aspectBiz"); biz.init("占旭鹏",20); }MoocAspect around 1.
张三 20
MoocAspect aroundinit 1.
AspectBiz init:张三 20
MoocAspect aroundinit 2.
MoocAspect around 2.