首页 > 代码库 > 浅谈spring中AOP以及spring中AOP的注解方式

浅谈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的注解方式