Spring框架之AOP的开发(基于AspectJ的注解的方式)

补充:再此之前可以先了解AOP的开发(基于AspectJ的XML方式):

https://blog.csdn.net/sinat_41803693/article/details/108595405

步骤:1、引入jar包 
                  基本开发包
                  AOP的包(aop、aspects、expression、aspectj[依赖包])
          2、创建XML文件,引入约束(:the aop schema ..............方法参见he context schema约)
          3、编写目标类。增强(save、find、delete、update方法)
          4、编写测试类   (介绍一个单元测试的方法............)

注:大体与xml形式相同,与XML不同的地方就是在xml文件,以及编写目标类时利用的是注解的形式。

1、applicationContext.xml

<!-- 利用这个可以实现AOP的注解开发 -->
<aop:aspectj-autoproxy/>

有一个proxy-target-class属性,默认为false,表示使用jdk动态代理织入增强,为true时,表示使用CGLib动态代理技术织入增强。不过即使proxy-target-class设置为false,如果目标类没有声明接口,则spring将自动使用CGLib动态代理。 

2、目标类MyAspect,增强save方法

    2.1先了解,各种通知的注释写法:

    @Aspect                                                 定义切面类
    @Before(value = "execution(* com.dao.OrderDao.save(..))")        前置增强
    @AfterReturning                                     后置通知
    @Around                                                 环绕通知
    @AfterThrowing                                      异常通知,出现异常程序执行结束
    @After                                                     最终通知,即使出现异常,最终通知还是会被执行

   2.2实现save增强的demo,其他的各种通知可以仿造这个save方法的前置通知设置。 

@Aspect
public class MyAspect {
    @Before(value = "execution(* com.dao.OrderDao.save(..))")
    public void before(){
        System.out.println("前置增强............");
    }
}

  2.3 多个通知作用于一个方法

            @Pointcut(value = "execution(* com.dao.OrderDao.save(..))")
             private void piontcut1(){}

            @Pointcut(value = "execution(* com.dao.OrderDao.delete(..))")
             private void piontcut2(){}

             声明一个方法,再引入这个方法即可。例如:

    @Before(value = "MyAspect.piontcut1()")
    public void before(){
        System.out.println("前置增强............");
    }
    //切入点的注解
    @Pointcut(value = "execution(* com.dao.OrderDao.save(..))")
    private void piontcut1(){}
    @Pointcut(value = "execution(* com.dao.OrderDao.delete(..))")
    private void piontcut2(){}

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值