切面:标注了@Aspect的类
切入点:也就是断言,包括一个切点表达式(@Pointcut)和一个签名(返回类型为void的方法),目前Spring只支持方法切入,不支持属性.
通知:切面下面的方法,与断言相关联
(以上三个概念,是在同一个类中)
关注点:业务类的方法
AOP代理:Spring判断出@Aspect切面下符合断言的业务Bean,并自动生成业务Bean的代理,
当匹配断言的业务Bean的方法被客户端调用的时候,执行对应的通知(advice).
简而言之,AOP代理就是:Spring代理符合断言的业务Bean,当匹配断言的业务方法被调用时,执行切面的通知.
注意:
切面本身不能被其它切面代理,当然也就不能被作为其它切面通知的对象.
Spring在生成代理时,会自动排除@Aspect的类
切入点:也就是断言,包括一个切点表达式(@Pointcut)和一个签名(返回类型为void的方法),目前Spring只支持方法切入,不支持属性.
通知:切面下面的方法,与断言相关联
(以上三个概念,是在同一个类中)
关注点:业务类的方法
AOP代理:Spring判断出@Aspect切面下符合断言的业务Bean,并自动生成业务Bean的代理,
当匹配断言的业务Bean的方法被客户端调用的时候,执行对应的通知(advice).
简而言之,AOP代理就是:Spring代理符合断言的业务Bean,当匹配断言的业务方法被调用时,执行切面的通知.
注意:
切面本身不能被其它切面代理,当然也就不能被作为其它切面通知的对象.
Spring在生成代理时,会自动排除@Aspect的类
@AfterReturning(pointcut="execution(* com.xyz.app.*.*(..))",returning="retval")
public void doSomething(object retval){
//do something...
}
@AfterReturning(pointcut="execution(* org.abc.app.*.*(..))",returning="retval")
@AfterThrowing(pointcut="execution(* org.xyz.app.*.*(..))",throwing="ex")
public void doExeAction(NullPointExcepton ex){
//do something...
}