JavaSpring【五、AOP基础】
2024-09-05 06:57:43
概念:
AOP——面向切面编程,通过预编译/动态代理实现程序功能的统一维护
主要功能是:日志、性能统计、安全控制、事务处理、异常处理
实现方式
- 预编译——AspectJ
- 动态代理——SpringAOP、JbossAOP
常用概念
- Advice通知的类型
Spring的AOP实现
- 纯Java实现,无需特殊编译,不需要控制类加载器
- 只支持方法执行连接点
- 目的是提供一种APO与SpringIOC之间的整合
- 与AspectJ相比,SpringAOP并不全面
有接口和无接口的SpringAOP的区别(没看懂)
- 有接口,默认使用标准JavaSErvice动态代理作为AOP代理
- 无接口使用CGLIB代理
配置、切面实现、切入点,切入方式
Demo:
首先需要增加依赖包
在Spring.xml中配置切面
切入点
切面实现
带参切入方法实现
测试类
带参切入点测试结果
Introductions引入
- 简介允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现来代表这些对象
- 由 aop:aspect 中的 aop:declare-parents 元素声明该元素用于声明所匹配的类型拥有一个新的parent
例如:有个Service提供server服务,想在不更改Service代码的前提下对该Service增加验证,即可以定义一个接口和实现,再通过Introductions为Service增加新的接口,使Service可以通过验证后再执行server
Demo:
声明一个接口,并提供实现
想要引入的类
配置
Test方法
执行结果
advisor
- 就像一个小的自包含的方面,只有一个advice
- 切面自身通过一个bean表示,并且必须实现某个advice接口,同事,advisor也可以很好的利用AspectJ的切入点表达式
- Spring通过配置文件中的aop:advisor 元素支持advisor 实际使用中大多数情况下他会和transactional advice配合使用
- 为了定义一个advisor的优先级以便让advice可以有序,可以使用order属性来定义advisor的顺序
例如:该标签只是切入的另一种方式,只需要配置切入点和实现了通知接口的类即可实现切面
Demo:
配置
实现了Advice接口的实现类
切入点测试调用方法
测试
结果
最新文章
- javaScript获取url中的参数
- Go语言http包Form解析之坑
- Linq to 泛型集合查询集合包括大写M和年龄小于等于18
- LeetCode(二)
- 添加Ubuntu的库文件路径
- 农场阳光 (simpson)
- Ubuntu下sqlite3的安装及使用
- Linux系统PATH变量配置
- NodeJS学习笔记之MongoDB模块
- const关键字在C和C++区别
- poj 2393 Yogurt factory(dp+贪心)
- 循环获取<;ul>;下拉列表的的值。进行对比,正确的家样式
- 基于visual Studio2013解决面试题之1003字符串逆序
- 不要用for循环去遍历LinkedList
- 2018-2019-2 20165239其米仁增《网络对抗》Exp1 PC平台逆向破解
- 【sql注入教程】mysql注入直接getshell
- ant_<;target>;标签含义与使用
- VS发布web应用程序报:无法识别的特性“xmlns:xdt”。请注意特性名称区分大小写 或 未能将文件obj\...复制到obj\...未能找到路径
- list转map
- hdu 5094 状压bfs+深坑