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的注解方式的更多相关文章

  1. 【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  2. 浅谈WebService之JAX-RS与spring整合

    背景:首先谈一下webservice: 1.Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序, 可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发 ...

  3. 浅谈服务架构“五脏六腑”之Spring Cloud

    本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: 第一小节「服务架构」旨在说明的包括两点,一服务架构是什么及其必要性:二是服务架构的基本组成.为什么第一节写服务架构而不 ...

  4. 浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程

    前言 最近开始了SpringBoot相关知识的学习,作为为目前比较流行.用的比较广的Spring框架,是每一个Java学习者及从业者都会接触到一个知识点.作为Spring框架项目,肯定少不了与数据库持 ...

  5. SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

    AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...

  6. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring声明式事务管理(基于Annotation注解方式实现)

    在 Spring 中,除了使用基于 XML 的方式可以实现声明式事务管理以外,还可以通过 Annotation 注解的方式实现声明式事务管理. 使用 Annotation 的方式非常简单,只需要在项目 ...

  7. Spring学习5-Spring整合JDBC及其事务处理(注解方式)

    一.整合的步骤   1.步骤一:首先要获得DataSource连接池(推荐使用B方式): 要对数据库执行任何的JDBC操作,需要有一个Connection.在Spring中,Connection对象是 ...

  8. spring实战四之Bean的自动装配(注解方式)

    使用注解装配: 从spring2.5开始,Spring启用了使用注解自动装配Bean的属性,使用注解方式自动装配与在XML中使用 autowire 属性自动装配并没有太大区别,但是使用注解方式允许更细 ...

  9. Spring框架学习(6)使用ioc注解方式配置bean

    内容源自:使用ioc注解方式配置bean context层 : 上下文环境/容器环境 applicationContext.xml 1 ioc注解功能 注解 简化xml文件配置 如 hibernate ...

  10. 浅谈jpa、hibernate与spring data jpa三者之间的关系

    1.解释hibernate之前先了解下什么是orm,orm是object relation mapping,即对象关系映射,object可以理解成java实体类Entity,relation是关系型数 ...

随机推荐

  1. delphi 窗体最大化 最小化

    procedure TForm1.SpeedButton2Click(Sender: TObject); begin sendmessage(form1.WindowHandle,WM_SYSCOMM ...

  2. 仿今日头条app手机端顶部触屏滑动导航

    swiper.js <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. 腾讯优秀 SDK 汇总

    1. 热修复 -- Tinker 项目地址:http://www.tinkerpatch.com/ SDK地址:https://github.com/Tencent/tinker 集成参考文档: ht ...

  4. Javascript高级编程学习笔记(80)—— 表单(8)表单序列化

    表单序列化 随着 Ajax 的出现,表单序列化成为一种常见需求 以将表单信息序列化为查询字符串为例 我们可以利用表单的 type 属性,以及 name 和 value 实现对表单的序列化 序列化应满足 ...

  5. JavaScript中+操作符的特殊性

    在JavaScript中+操作符有两个作用: (1)加法运算 (2)字符串连接 在使用+操作符进行运算时,当+操作符两边都是数值类型的时候,进行加法运算; 当+操作符两边有任意一边是字符串,则进行字符 ...

  6. Xamarin.Android 嵌入web端界面

    在程序中嵌入Web端界面. 首先在前台界面上创建一个webview <android.webkit.WebView android:layout_width="match_parent ...

  7. 解决 .NET Core 在 Linux 下的时区问题

    环境 # dotnet --info .NET Core SDK (reflecting any global.json): Version: Commit: 8a7ff6789d Runtime E ...

  8. 对requestAnimationFrame的一点理解

    假设一个web页面为60fps(fps意为frame per second),这意为着这个页面每秒钟能重新渲染60次,60帧/1000ms换算过来约为16.6ms/帧. requestAnimatio ...

  9. 2012-2014 三年浙江 acm 省赛 题目 分类

    The 9th Zhejiang Provincial Collegiate Programming Contest A    Taxi Fare    25.57% (166/649)     (水 ...

  10. 用js如何获取file是否存在

    其实注意点就可以知道了. 举个例子 firebug看出这代码: <div id="SWFUpload_0_0" class="uploadify-queue-ite ...