spring中Aop的注解
@Pointcut注释声明一个切点目的是为了告诉切面,谁是它的服务对象。(此注释修饰的方法的方法体为空,不需要写功能比如 public void say(){};就可以了,方法名可以被候命的具体服务功能所以引用,它可以被理解为切点对象的一个代理对象方法)
在spring配置文件中开启aop注释自动代理。如:<aop:aspectj-autoproxy/>
注解方式声明Aop 1.用@Aspect注解将类声明为切面(如果用@Component("")注解注释为一个bean对象,那么就要在spring配置文件中开启注解扫描,<context:component-scan base-package="com.cjh.aop2"/> 否则要在spring配置文件中声明一个bean对象)
定义切点@Pointcut("execution(* *.saying(..))")
2.在切面需要实现相应方法的前面加上相应的注释,也就是通知类型。
前置通知(注解中的sayings()方法,其实就是上面定义pointcut切点注解所修饰的方法名,那只是个代理对象,不需要写具体相当于xml声明切面的id名,如下,相当于id="embark",用于供其他通知类型引用)
3.此处有环绕通知,环绕通知方法一定要有ProceedingJoinPoint类型的参数传入,然后执行对应的proceed()方法,环绕才能实现。
前置通知
@Before("sayings()")
后置通知
@After("sayings()")
环绕通知 注意要有ProceedingJoinPoint参数传入。
@Around("sayings()")
切记:<!-- 开启aop注解方式,此步骤不能少,这样java类中的aop注解才会生效 -->
<aop:aspectj-autoproxy/>