Java-2016.03.30 Spring AOP
来源:互联网 发布:js 跨域请求 编辑:程序博客网 时间:2024/05/29 14:57
什么是AOP:
AOP把软件系统分为两个部分,核心业务逻辑组件和横切关注点。横切关注点模块化为特殊的类。这些类就称为切面。
好处:
①:横切关注点都集中于一块,不会出现大量的重复代码。
②:核心横块只关注核心功能的代码,模块间的耦合度降低。
配置可以通过xml文件来进行,大概有四种方式:
①. 配置ProxyFactoryBean,显式地设置advisors, advice, target等
② 配置AutoProxyCreator,这种方式下,还是如以前一样使用定义的bean,但是从容器中获得的其实已经是代理对象
③. 通过<aop:config>来配置
④. 通过<aop: aspectj-autoproxy>来配置,使用AspectJ的注解来标识通知及切入点。
AOP概念:
连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。在Spring AOP中,一个连接点总是表示一个方法的执行。
通知(Advice):在切面的某个特定的连接点上执行的动作。其中包括了“around”、“before”和“after”等不同类型的通知(通知的类型将在后面部分进行讨论)。
许多AOP框架(包括Spring)都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。
切入点(Pointcut):匹配连接点的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法
时)。切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。
引入(Introduction):用来给一个类型声明额外的方法或属性(也被称为连接类型声明(inter-type declaration))。Spring允许引入新的接口(以及一个对应的
实现)到任何被代理的对象。例如,你可以使用引入来使一个bean实现IsModified接口,以便简化缓存机制。
织入(Weaving):将切面应用到目标对象来创建新的代理对象的过程。这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。Spring和其他纯Java AOP
框架一样,在运行时完成织入。
增强(Advice):是织入到目标类连接点上的一段程序代码。Spring使用增强类定义横切逻辑,同时由于Spring只支持方法连接点,增强还包括了在方法上的哪一点加入
横切代码的方位信息,所以增强既包括横切逻辑、还包含部分连接点的信息。
引介(Introduction):是一种特殊的增强,为类添加一些属性和方法。
切面(Advisor):代表一般切面,包含了横切代码和连接点信息,本身是一个简单的切面,横切的连接点是目标类的所有方法。3种类型:一般切面(advisor)、切点切
面(PointcutAdvisor)、引介切面(IntroductionAdvisor)。
- Java-2016.03.30 Spring AOP
- [java]Spring AOP
- java/spring/aop
- Java Spring AOP用法
- Java Spring AOP用法
- java 框架-spring-AOP
- [JAVA] Spring AOP简述
- Java AOP & Spring AOP 原理和实现
- java+spring简单实现AOP
- Java动态代理-->Spring AOP
- spring aop,java动态代理
- 个人学习-java-spring-aop
- 【转】Java Spring AOP详解
- [JAVA] Spring AOP API简述
- [JAVA] Spring AOP Annotation简述
- [JAVA] Spring AOP XML 简述
- spring中java实现aop
- Java 动态代理模仿Spring AOP
- Struts2 datetimepicker 日期月份乱码解决
- 反编译apk文件教程(查看java代码篇)
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
- Softmax回归
- hdoj--2147--kiki's game
- Java-2016.03.30 Spring AOP
- iOS 保持界面流畅的技巧
- 阿里巴巴测试开发工程师面试记录
- 计算机网络小记1
- c++第二次实验
- 337. House Robber III
- 快速排序改进
- 笔记 - Android - 3.控件属性
- Complete Guide to Parameter Tuning in XGBoost (with codes in Python)