Spring AOP面向切面编程
来源:互联网 发布:bootstrap 模版 cms 编辑:程序博客网 时间:2024/06/06 19:59
1、知识背景:
软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点。而为真切关注点提供服务的就是横切关注点。
2.面向切面的基本原理:
横切关注点:就是那些夹杂在业务代码中服务性代码。(如事务、日志、安全、缓存等);
切面:就是横切关注点的模块化设计的表现形式,其实就是一个类;
切面=通知+切点;
通知:就是切面类当中的那些方法(动作性的东西)
五种通知类型:
1.Before:在方法调用之前调用通知;
2.After:在方法完成之后调用通知,无论方法执行成功与否;
3.After-returning:在方法执行成功之后调用通知;
4.After-throwing:在方法抛出异常后进行通知;
5.Around:环绕通知,在被 通知的方法调用之前和调用之后执行自定义行为。
连接点:表示在业务类当中有可能织入通知的地方;
切点:表示要进行织入的连接点;
织入:将服务代码与业务代码进行融合的过程称为织入。
3.Spring对AOP的支持
并不所有AOP框架都是一样的,他们在连接点模型上可能有强弱之分。有些允许对字段修改符级别应用通知。有些支持方法调用连接点:
Spring提供的4种各具特色的AOP支持
1.基于代理的经典AOP;
2.@AspectJ注解驱动的切面;
3.纯POJO切面;
4.注入式AspectJ切面。
Spring在运行期间通知对象,通过在代理类中织入包裹切面,Spring在运行期间将切面织入到Spring管理的Bean中。
代理类封装了目标类,并拦截被通知的方法调用,再将调用转发给真正的目标Bean。
- 当拦截到方法调用时,在调用目标 Bean 方法之前,代理会执行切面逻辑。
当真正应用需要被代理的 Bean 时,Spring 才创建代理对象。如果使用 ApplicationContext,在 ApplicationContext 从 BeanFactory 中加载所有 Bean 时,Spring 创建代理对象,因为 Spring 在运行时候创建代理对象,所以我们不需要特殊的编译器来织入 Spring AOP 的切面。
- 当拦截到方法调用时,在调用目标 Bean 方法之前,代理会执行切面逻辑。
- Spring 支持方法创建连接点
- 因为 Spring 基于动态代理,所以 Spring 只支持方法连接点。
- Spring 缺失对字段连接点的支持,无法让我们更加细粒度的通知,例如拦截对象字段的修改
- Spring 缺失对构造器连接点支持,我发在 Bean 创建时候进行通知。
阅读全文
0 0
- 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)
- Spring---AOP面向切面编程
- Spring面向切面编程AOP
- Spring:Aop面向切面编程
- 使用MAT的命令行工具分析hprof文件
- 供应链金融深度解析
- 谱减法降噪
- Test类实验
- MarsDev可视化开发学习网
- Spring AOP面向切面编程
- html table中td内容超出显示.怎么实现
- Paint之setColorFilter(一)
- 使用Git团队开发
- Tomcat ssl 证书 支持https
- 访问linux环境下的spring boot项目需要用户名和密码的解决办法
- android 设置进入全屏,取消全屏的几种方式
- 正则表达式
- 谱减法