day3
前置通知
所有切面功能都是由切面方法来实现的,可以奖各种切面都在此类中进行开发
迁至同时切面方法的规范
-
访问权限是public
-
方法的返回值是void
-
方法名称自定义
-
方法没有参数,如果由也只能是JoinPoint类型
-
必须使用@Before注解来声明切入的时机和切入点
参数:Value指定切入点表达式
@Before(value="execution(public String com.chenluo.s01.SomeServiceImpl.doSome(String,int))")
public void myBefore(){
system.out.println("切面方法中的前置通知实现")
}
AspectJ框架切换动画太代理和CGLib动态代理
<aop:aspectj-autoproxy></aop:aspectj-autoproxy> ==>默认是JDK动态代理,取时必须使用接口类型
<aop:aspectj-autoproxy proxy-target-class="true"><aop:aspectj-autoproxy> ==>设置CGLib子类代理,可以使用接口和实现类
记住:使用接口来接,永远不会出错。
后置通知
后置通知的方法的规范
-
访问权限是public
-
方法没有返回值void
-
方法名称自定义
-
方法有参数(也可以没有参数,如果目标方法没有返回值,则可以写无参的方法,但一般会写有参,这样可以处理无参也可以处理有参),这个切面方法就是目标方法的返回值。
-
使用@AfterReturning注解表明是后置通知
参数:value:指定切入点表达式
returning:指定目标方法的返回值名称,则名称必须与切面方法的参数名称一致
@AfterReturning(value = "execution(* com.chenluo.s02.*.*(..))",returning="obj") public void myAfterReturning(Object obj){ system.out.printing("后置通知功能实现") }