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方式 ...
随机推荐
- HMS Core 能力速配,唱响恋爱进行曲
情人节,HMS Core 最具CP感的能力搭档来袭,浓浓爱意,表白各行业,你准备好了吗? 1.ML Kit +Signpal Kit 科技相助,恋爱提速.展现爱意的方式有千百种,你可以用文本翻译学习数 ...
- AppiumForMac安装2
安装了两天的Python和Appium,各种不成功,到现在还不知道要怎么才能使用,两者之间的关联性还是没找到. 虽然很乱,还是把这期间用到的知识汇总下: 1.爬墙很重要,下载东西慢的很. 2.最新的M ...
- 为什么大厂前端监控都在用GIF做埋点?
什么是前端监控? 它指的是通过一定的手段来获取用户行为以及跟踪产品在用户端的使用情况,并以监控数据为基础,为产品优化指明方向,为用户提供更加精确.完善的服务. 如果这篇文章有帮助到你,️关注+点赞️鼓 ...
- Solution -「LOCAL」ZB 平衡树
\(\mathcal{Description}\) OurOJ. 维护一列二元组 \((a,b)\),给定初始 \(n\) 个元素,接下来 \(m\) 次操作: 在某个位置插入一个二元组: 翻 ...
- node(s) didn‘t match node selector.
k8s集群中,有pod出现了 Pending ,通过 kubectl describe pod 命令,发现了如下报错 0/4 nodes are available: 1 node(s) had ta ...
- 手把手带你安装最小化suse 12 linux
当然. 你需要现有一个vmware,还要有一个suse的镜像,suse镜像可以直接去官网获取,只需要注册一个suse的账号就可以了,官网下载会有点慢,可以使用迅雷下载 F2 可以设置安装界面的语言,可 ...
- 深入MySQL(二):MySQL的数据类型
前言 对于MySQL中的数据类型的选择,不同的数据类型看起来可能是相同的效果,但是其实很多时候天差地别. 本章从MySQL中的常用类型出发,结合类型选择的常见错误,贯彻MySQL的常用类型选择. 常用 ...
- 认识并学会使用spring boot
1,什么是SpringBoot SpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品,用一些固定的方式来构建生产级别的spri ...
- Rust所有权及引用
Rust 所有权和借用 Rust之所以可以成为万众瞩目的语言, 就是因为其内存安全性. 在以往内存安全几乎全都是通过GC的方式实现, 但是GC会引来性能.CPU以及Stop The World等问题, ...
- 前端防抖,double click 克星
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...