浅谈spring中AOP以及spring中AOP的注解方式

Posted DeepSleeping丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈spring中AOP以及spring中AOP的注解方式相关的知识,希望对你有一定的参考价值。

  AOP(Aspect Oriented Programming):AOP的专业术语是"面向切面编程" 什么是面向切面编程,我的理解就是:在不修改源代码的情况下增强功能.好了,下面在讲述aop注解方式的情况下顺便会提到这一点.

一、搭建aop注解方式的环境(导入以下的包)

二、实现

  环境搭建好了之后,就创建项目。

  1.创建接口类(CustomerDao)并添加两个方法

  2.接口类创建好了后,自然是要new一个实现类(CustomerDaoImpl)并实现接口中的方法

  

  3.以上基础工作做完后,我们要用到springIOC的思想,将customerDaoImpl类交给spring管理

    在src目录下创建名为 applicationContext.xml 的xml文件

    bean是一个spring中的标签对, 你可以理解为一个小物品,id就是你取的名字,但是一般都是类名然后首字母小写, class中添加的是类的全路径

 

    开启自动注解/代理:只有开启了自动代理 ,我们接下来所编写的注解才有真正的应用

      

 

 

   4.环境和基础类都编写完成,接下来可以创建一个Demo类用于实现

  

 

 首先我们需要将存在spring容器中的CustomerDaoImpl类拿出来

  代码\'\'1\'和\'2\'就是做这个事情的。

    \'1\'中顾名思义,你得告诉它从哪里拿,所以要给一个路径

    \'2\'中就是注解的方式,叫依赖注入:将xml文件中早就写好的类注入给字段customerDao,@Resource中的name就是指之前bean中的id值

 接下来就是测试了(需要添加代码\'3\'\'4\'),编写一个run1()在方法上添加@Test,测试的时候双击方法名选中后右键选择在junit上运行,这就是单元测试了,很方便。

 

  有了前面的铺垫后,执行了run1方法后就可以显示实现类中的两行输出了

 

三、aop切面类

  1.创建切面类MyAspectAnno.java(在配置文件中添加一个bean,继续交给spring管理)

 2.添加需要增强的功能方法

   value中的代码是表达式, public 后的*是指任何类型的返回值都可以, save()是指在哪里增强或者说在哪里添加功能,这些代码写完后就是指 在save()执行后会执行 注解@After下的方法,即after() 这就是增强了

 

    但是当我们多写几个通知(环绕通知,前置通知等等)每次都要添加表达式的代码,复制粘贴也很麻烦,这里我们可以添加一个切入点,实现如下:

 

  以后我们只需要这样做就行了,下面添加了一个环绕通知:

  

      

  value值不再是很长的表达式了,也方便以后的维护

 

上图已经很明确的说明了我们成功实现了功能的增强,利用aop思想并用注解的方式(我们所添加的通知分别在切入点(save())的之后和环绕着执行了)

   

 

以上是关于浅谈spring中AOP以及spring中AOP的注解方式的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOPAOP通知执行顺序~

浅谈 Spring的AOP的实现 -- 动态代理

浅谈Spring的AOP实现-动态代理

Spring实战AOP概念以及Spring AOP

[AOP] 2. AOP的两种实现-Spring AOP以及AspectJ

说说AOP和IOC的概念以及在spring中是如何应用的