Spring AOP Xml配置过程及解释
Spring AOP(基于xml)
目前主流的AOP框架有两个,分别是Spring AOP和AspectJ。新版本的Spring框架建议使用AspectJ来开发AOP。
专业术语:
Aspect(切面):在实际应用中,切面通常是指封装用于横向插入系统功能的类,该类要被Spring容器识别为切面,需要在配置文件中通过<bean>元素指定。
JoinPoint(连接点):在程序执行过程中的某个阶段点,它实际上是对象的一个操作,例如方法的调用或异常的抛出。在SpringAOP中,连接点就是指方法的调用。
PointCut(切入点):是指切面与程序流程的交叉点,即那些需要处理的连接点。通常在程序中,切入点指的是类或者方法名,如某个通知要应用到所有以add开头的方法中,那么所有满足这个规则的方法都是切入点。
Advice(通知增强处理):AOP框架在特定的切入点执行增强处理,即在定义好的切入点初所要执行的代码。可以理解为切面类中的方法,他是切面类的具体实现。
Target Object(目标对象):是指所有被通知的对象,也称为被增强对象。如果AOP框架采用的是动态AOP实现,那么该对象就是一个被代理的对象。
Proxy(代理):将通知应用到目标对象上,被动态创建的对象。
Weaving(织入):将切面代码插入目标对象上,从而生成代理对象的过程。
基于xml的声明式AspectJ
所有的切面、切入点和通知都必须定义在<aop:config>元素内。Spring配置文件中的<beans>元素下可以包含多个<aop:config>元素,一个<aop:config>元素中又可以包含属性和子元素,其子元素包括<aop:pointcut>、<aop:advisor>、<aop:aspect>。在配置时,这三个子元素必须按照此顺序来定义。在<aop:aspect>元素下,同样包含属性和多个子元素,通常使用<aop:aspect>元素及其子元素就可以在XML文件中配置切面、切入点和通知。

- 配置切面:在Spring的配置文件中,配置切面使用的是<aop:aspect>元素,该元素会将一个一定一号的Spring Bean转换为切面Bean,所以在配置文件中要先定义一个普通的Spring Bean(如上述代码中的myAspect)。定义完成之后,通过<aop:aspect>元素的ref属性即可引用该Bean。
| 属性名称 | 描述 |
|---|---|
| id | 用于定义该切面的唯一标识名称 |
| ref | 用于引用普通的Spring Bean |
- 配置切入点:在Spring的配置文件中,切入点是通过<aop:pointcut>元素来定义的。当<aop:pointcut>元素作为<aop:config>元素的子元素定义时,表示其为全局切点,可以被多个切面共享;当<aop:pointcut>元素作为<aop:aspect元素的子元素时,表示该切入点只对当前切面有效。>
| 属性名称 | 描述 |
|---|---|
| id | 用于定义该切入点的唯一标识名称 |
| expression | 用于指定切入点关联的切入点表达式 |
在上述配置代码片段中,execution(* com.ssm.aspectj.*.*(..))就是定义切入点表达式。总的意思是匹配com.ssm.aspect保重任意类的任意方法的执行。其中execution是表达式的主体,第一个*是指返回值类型,第二个*是指类名,第三了*是指方法名,都表示
任意的。括号里的..表示任意参数。第一个*与包名之间有空格。
具体实践







Spring AOP Xml配置过程及解释的更多相关文章
- spring 5.x 系列第3篇 —— spring AOP (xml配置方式)
文章目录 一.说明 1.1 项目结构说明 1.2 依赖说明 二.spring aop 2.1 创建待切入接口及其实现类 2.2 创建自定义切面类 2.3 配置切面 2.4 测试切面 附: 关于切面表达 ...
- 基于注解的Spring AOP的配置和使用
摘要: 基于注解的Spring AOP的配置和使用 AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.可以通过预编译方式和运行期动态代理实现在不 ...
- spring+mybaits xml配置解析----转
一.项目中spring+mybaits xml配置解析 一般我们会在datasource.xml中进行如下配置,但是其中每个配置项原理和用途是什么,并不是那么清楚,如果不清楚的话,在使用时候就很有可能 ...
- Spring AOP 不同配置方式产生的冲突问题
Spring AOP的原理是 JDK 动态代理和CGLIB字节码增强技术,前者需要被代理类实现相应接口,也只有接口中的方法可以被JDK动态代理技术所处理:后者实际上是生成一个子类,来覆盖被代理类,那么 ...
- spring AOP为什么配置了没有效果?
spring Aop的配置一定要配置在springmvc配置文件中 springMVC.xml 1 <!-- AOP 注解方式 :定义Aspect --> <!-- ...
- spring的xml配置声明以及相应的问题处理
spring的xml配置声明: xml配置声明 Code 问题处理 问题1 xml报错: cvc-elt.1: Cannot find the declaration of element 'bea ...
- spring中用xml配置构造注入的心得
spring中用xml配置构造注入时,如果 <constructor-arg> 属性都是 ref ,则不用理会参数顺序 <constructor-arg ref="kill ...
- 基于XML配置的spring aop增强配置和使用
在我的另一篇文章中(http://www.cnblogs.com/anivia/p/5687346.html),通过一个例子介绍了基于注解配置spring增强的方式,那么这篇文章,只是简单的说明,如何 ...
- Spring 使用AOP——xml配置
目录 AOP介绍 Spring进行2种实现AOP的方式 导入jar包 基于schema-based方式实现AOP 创建前置通知 创建后置通知 修改Spring配置文件 基于schema-based方式 ...
随机推荐
- ACM-ICPC 2015辽宁省赛
省赛之于ACM 就是让省内的队伍互相比较而已~~~(何况弱省(本渣校 四个二等四个三等(其实是六个三道题 两个两道题,是院长后来和主办方沟通了下- - (本弱很水,但还是要吐槽:好水的省赛啊!!
- 国外很便宜的服务器 一年 2核2G 一年20美元
今年 服务器 //=====================================一下是去年的================================= 优惠码:zhujicepin ...
- Solution -「ARC 104F」Visibility Sequence
\(\mathcal{Description}\) Link. 给定 \(\{x_n\}\),对于满足 \(h_i\in[1,x_i]\) 的序列 \(\{h_n\}\),定义序列 \(\{p ...
- mysql中generated always as的使用
-- generated always as的使用 CREATE TABLE t1( c1 INT, c2 DOUBLE(20,19) , c3 INT GENERATED ALWAYS AS(c1* ...
- etcd受损节点重新加入集群
文章目录 查看当前集群状态 删除受损etcd节点的数据 数据受损节点重新加入集群 修改etcd启动参数,重启etcd 由于自己的误操作,将A节点的etcd备份数据复制到B节点的etcd备份节点目录下, ...
- 深入MySQL(三):MySQL的索引的应用
在MySQL的优化中,索引的作用绝对算是一个大头,很多时候索引使用得当可以使得一个查询的效率提高几个数量级,同时它还具有自动排序等功能.所以如果是深入MySQL,那么索引绝对是其中重要的一部分. My ...
- pytest--pytest基本介绍
pytest简介 pytest 是 python 的第三方单元测试框架,比自带的 unittest 更简洁和高 效,同时兼容 unittest 框架.它还有如下优点: 1.简单灵活,容易上手,文档丰富 ...
- MShadow中的表达式模板
表达式模板是Eigen.GSL和boost.uBLAS等高性能C++矩阵库的核心技术.本文基于MXNet给出的教程文档来阐述MXNet所依赖的高性能矩阵库MShadow背后的原理. 编写高效的机器学习 ...
- kali Linux openvas忘记密码的解决方法
1.先删除默认的admin帐号root@xxs:~# openvasmd --delete-user=admin User deleted. 2.创建admin帐号,默认会生成密码root@xxs:~ ...
- Smartbi制作报表教程:热销车型分类排名总表
今天Smartbi给大家分享 热销车型分类排名总表 这张移动端报表的制作过程. 制作工具:Smartbi云报表 Smartbi云报表是一款基于Office Excel的SAAS BI工具,支持在Exc ...