spring学习Day3

81 阅读1分钟

day3

前置通知

所有切面功能都是由切面方法来实现的,可以奖各种切面都在此类中进行开发

迁至同时切面方法的规范

  1. 访问权限是public

  2. 方法的返回值是void

  3. 方法名称自定义

  4. 方法没有参数,如果由也只能是JoinPoint类型

  5. 必须使用@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子类代理,可以使用接口和实现类

记住:使用接口来接,永远不会出错。

后置通知

后置通知的方法的规范

  1. 访问权限是public

  2. 方法没有返回值void

  3. 方法名称自定义

  4. 方法有参数(也可以没有参数,如果目标方法没有返回值,则可以写无参的方法,但一般会写有参,这样可以处理无参也可以处理有参),这个切面方法就是目标方法的返回值。

  5. 使用@AfterReturning注解表明是后置通知

    参数:value:指定切入点表达式

    ​ returning:指定目标方法的返回值名称,则名称必须与切面方法的参数名称一致

    @AfterReturning(value = "execution(* com.chenluo.s02.*.*(..))",returning="obj")
    public void myAfterReturning(Object obj){
    	system.out.printing("后置通知功能实现")
    }