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)。

0 0