文档章节

Spring的AOP开发

L
 LLLLLi拾
发布于 2017/03/28 17:16
字数 776
阅读 23
收藏 0

首先是STS插件:(Spring Tool Suit) 

网上找资源/直接使用Spring官方安装好插件的eclipse

 

 

Spring整合Junit4测试: 

传统测试类写法缺点:

1. 测试代码冗余,频繁准备环境

2. 代码难于维护

此时:

1. 导包:

4+2、spring-aop、spring-test、junit4类库

2. 在测试类中使用注解:

创建容器:

指定容器匹配路径:

从容器中获取对象:

测试:


 

 

Spring的AOP开发: 

AOP简介:Aspect Oriented Programming,面向切面编程。

在不修改源码的情况下,对程序进行增强,能够进行权限校验、日志记录、性能监控、事务控制。

 

AOP思想:过滤器、动态代理、拦截器都体现了AOP思想(纵向重复、横向抽取)

 

SpringAOP开发:Spring封装了动态代理技术来体现AOP思想

 

Spring封装的代理技术:

1. 动态代理(JDK):

动态代理技术必须基于接口。面向接口代理。所以单纯使用动态代理技术,无法完成对没有接口的类的代理

2. CGLib代理(第三方):

spring为了能够对所有类产生代理。引入第三方代理技术。CGLib代理。因为CGLib代理生成的代理类是目 标类的子类(继承)。不受接口的限制。可以对几乎任何类产生代理。(当目标类被final修饰,则不能代理)

Spring封装两种代理方式的目的,就是能够对所有类生成代理。

 

AOP部分开发术语:

Joinpoint:连接点。所有可以 可以被代理的方法,都叫连接点。

Pointcut:切点。真正的应用/即将应用代理的方法。

Advice:通知。我们想要对切点增强的代码,就称为通知。

Target:目标对象。切点所在的类的对象

Weaving:织入。将通知应用到目标对象的切点,形成代理对象的过程。

Proxy:代理对象。将通知应用到目标对象的切点形成的新对象。

Aspect/Advisor:切面。切点+通知=切面

 

 

SpringAOP开发流程(XML): 

1. 导包

4+2、spring-aop、spring-aspects、aop联盟、aspectJ-weaver、spring-test、junit4类库

2. 准备目标类

3. 准备通知类

4. 生成代理类(配置文件)

配置目标对象和通知对象:

引入AOP约束:Spring解压目录下

 

配置切点和切面:

切点表达式语法:

* xxx.xxx.xxx.*aaa.*(..):表示在xxx.xxx.xxx包下所有以aaa结尾的类的任意参数和返回值的任意方法

* xxx.xxx..*aaa.*(..):表示在xxx.xxx包中以及所有子包中以aaa结尾的类的任意参数和返回值的任意方法

 

5. 此时即可测试。

 

 

SpringAOP开发流程(注解):

1. 导包,同上

2. 准备目标类,同上

3. 准备通知类,同上

4. 在配置文件中开启注解代替XML配置"开关":

配置目标对象和通知对象:同上

配置 自动检测注解完成代理:

5. 使用注解代替XML配置:

类上配置:

抽取切点表达式:

方法上配置:




 

6. 此时即可测试。

 

 

 

 

 

未完待续……

© 著作权归作者所有

共有 人打赏支持
L
粉丝 0
博文 20
码字总数 17442
作品 0
程序员
私信 提问
为什么要有Spring AOP?

上一篇从Web开发演进过程的一个侧面简述了一下为什么会有Spring?事实上只介绍了为什么会有Spring IOC(控制反转/依赖注入)以及Spring IOC的雏形。我们知道Spring的两个核心知识点是:IOC和...

临江仙卜算子
2018/08/16
0
0
spring中的AOP与IOC

在J2EE的整个发展历程中,现在正是一个非常时刻。从很多方面来说,J2EE都是一个伟大的成功:它成功地在从前没有标准的地方建立了标准;大大提升了企业级软件的开放程度,并且得到了整个行业和...

Sandy_wu
2013/06/08
0
0
spring servlet3.0 fragment aop 问题

以前没有搞过 servlet fragment 和 spring 的整合 巨坑 今天在spring的时候, 由于自己这部分开发的有AOP 需求, 于是在spring的配置文件中加入 AOP 配置, 结果 切面的执行次数 变成了4次 坑 ...

triankg
2013/11/19
0
0
对Spring的IoC和DI最生动的解释

1、Spring IOC IoC与DI 首先想说说IoC(Inversionof Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系...

Oscarfff
2015/10/29
0
0
2014-03-11 Spring的学习(3)------面向切面编程(AOP)

AOP概念 首先让我们从一些重要的AOP概念和术语开始。这些术语不是Spring特有的。不过AOP术语并不是特别的直观,如果Spring使用自己的术语,将会变得更加令人困惑。 切面(Aspect):一个关注...

查封炉台
2014/03/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jenkins安装

https://my.oschina.net/u/593517/blog/1797968 jenkins 安装 https://my.oschina.net/u/593517/blog/3028175 GIT 安装 https://my.oschina.net/u/593517/blog/3028179 maven 安装 插件安装 ......

Gm_ning
9分钟前
1
0
小言服务端解决方案-监控

框架保证方向,整体包容细节 为保证服务端运行平稳正常,owner应使得系统应保有相应的监控:系统监控,业务监控。而服务运行的平稳高效是否有保障跟监控粒度又成直接的正比关系。本文仅针对开...

重城重楼
21分钟前
0
0
搜索引擎(Elasticsearch搜索详解)

学完本课题,你应达成如下目标: 掌握ES搜索API的规则、用法。 掌握各种查询用法 搜索API 搜索API 端点地址 GET /twitter/_search?q=user:kimchy GET /twitter/tweet,user/_search?q=user:...

这很耳东先生
44分钟前
6
0
浅谈如何减少GC的次数

GC会stop the world。会暂停程序的执行,带来延迟的代价。所以在开发中,我们不希望GC的次数过多。 本文将讨论如何在开发中改善各种细节,从而减少GC的次数。 (1)对象不用时最好显式置为 Nu...

浮躁的码农
46分钟前
1
0
jpa 自定义返回对象

任何ORM框架都少不了开放自定义sql的问题。jpa自然也不例外,很多场景需要写复杂sql的。 首先定义一个方法签名,然后打上@Query注解。像下面这样,需要注意nativeQuery,这个表示query中的字...

朝如青丝暮成雪
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部