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/>

 

posted @ 2019-07-06 20:15  大糖果i  Views(829)  Comments(0Edit  收藏  举报