Spring AOP
来源:互联网 发布:模拟电子琴软件下载 编辑:程序博客网 时间:2024/06/06 08:25
AOP是面向切面编程 ,SpringAOP 的底层技术-动态代理。
AOP 通过动态代理模式,管控各个对象的切面环境,管理包括日志,数据库事务等操作。
一些常用的流程中,比如数据库事务, AOP会提供默认的实现逻辑,降低开发工作量,开发集中在业务逻辑上。
AOP 就是在方法前,方法后, 方法有异常,无异常 时执行相关的拦截方法。
面向切面编程相关术语 :
.切面:拦截器。
.通知:切面的方法, 前置通知,后置通知,返回通知 ,异常通知,环绕通知 。
.连接点:某个类的某个方法作为连接点,通过切点的正则表达式判断哪些方法是连接点。
.切点:告诉AOP在什么时候启动拦截并织入对应的流程中,通过正则表达式进行限定。
.引入:引入允许我们在现有的类里添加自定义的类的方法。
.织入:是一个生成代理对象并将切面内容放入到约定流程中的过程。Spring的规则:当类的实现存在接口时,spring将提供JDK动态代理,从而 织入各个通知,没有接口就采用CGLIB来生成代理对象。
Spring对AOP的支持
AOP并不是spring框架特有的,只是支持者之一。
Spring实现AOP的拦截功能有4 种 :
. 使用ProxyFactoryBean和对应的接口
. 使用XML配置-常用
. 使用@AspectJ注解 -常用
. 使用AspectJ注入切面
使用@AspectJ注解开发SpringAOP
创建切面:@Aspect 作用于类
@Before(“execution(*com.ssm.testAspect.aop.printRole(..))”) 定义连接点 和 定义切点。
. execution: 代表执行方法是触发
.*:代表任意返回类型方法
.(..) : 任意的参数
@Pointcut 定义一个切点, 以后可以使用, 例如
@Pointcut(“execution(*com.ssm.testAspect.aop.printRole(..))”)publicvoid print(){}
@Before(“print()”)public voidbefore(){syso(“before…”)}
测试AOP
@EnableAspectJAutoProxy 启用AspectJ 框架的自动代理 , 这个时候才会生成动态代理对象,进而可以使用AOP。
也可以通过XML方式<aop:aspectj-autoproxy />
使用XML配置开发springAOP
<aop:config>---定义aop内容信息
<aop:aspect>定义切面
<aop:before>定义通知
- AOP、Spring的AOP
- AOP--Spring AOP
- Spring AOP 嵌套AOP
- spring AOP
- Spring AOP
- Spring AOP
- spring aop
- Spring AOP
- spring AOP
- spring aop
- Spring aop
- Spring-AOP
- Spring AOP
- spring aop
- spring aop
- Spring AOP
- Spring AOP
- Spring Aop
- 深度学习|神经网络模型求解思路总结
- 流式布局 点击事件
- [Leetcode] 539. Minimum Time Difference 解题报告
- Java 大对象类型的 Hiberante 映射
- 《Java编程技巧1001条》第367条 设置以毫秒为单位的当前时间
- Spring AOP
- Intellij2017下springboot项目启动热部署功能
- Ubuntu 16.04安装JDK并配置环境变量
- 为什么梯度下降是有效的?
- Activity相关知识回顾
- 一款能帮助程序员发现问题的软件
- VOC2007数据集图片画框
- java--TCP
- 《Neural Networks and Deep Learning》读书笔记:最简单的识别MNIST的神经网络程序(1)