- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
/a906998248/article/details/7514969Spring3.0 AOP 详解分类:?/a906998248/article/category/1134747Spring 3.0 AOP2012-04-26 20:05?362人阅读?/a906998248/article/details/7514969评论(0)?javascript:void(0);收藏?/a906998248/article/details/7514969举报一、什么是 AOP。AOP(Aspect Orient Programming),也就是面向切面编程。可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。二、AOP 的作用。常常通过 AOP 来处理一些具有横切性质的系统性服务,如事物管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案。三、AOP 的实现原理。如图:AOP 实际上是由目标类的代理类实现的。AOP 代理其实是由 AOP 框架动态生成的一个对象,该对象可作为目标对象使用。AOP 代理包含了目标对象的全部方法,但 AOP 代理中的方法与目标对象的方法存在差异,AOP 方法在特定切入点添加了增强处理,并回调了目标对象的方法。四、Spring 中对 AOP 的支持Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。因此,AOP 代理可以直接使用容器中的其他 Bean 实例作为目标,这种关系可由 IoC 容器的依赖注入提供。Spring 默认使用 Java 动态代理来创建 AOP 代理, 这样就可以为任何接口实例创建代理了。当需要代理的类不是代理接口的时候,?Spring 自动会切换为使用 CGLIB 代理,也可强制使用 CGLIB。?AOP 编程其实是很简单的事情。纵观 AOP 编程, 其中需要程序员参与的只有三个部分:定义普通业务组件。定义切入点,一个切入点可能横切多个业务组件。定义增强处理,增强处理就是在 AOP 框架为普通业务组件织入的处理动作。所以进行 AOP 编程的关键就是定义切入点和定义增强处理。一旦定义了合适的切入点和增强处理,AOP 框架将会自动生成 AOP 代理,即:代理对象的方法 = 增强处理 + 被代理对象的方法。五、Spring 中 AOP 的实现。Spring 有如下两种选择来定义切入点和增强处理。基于 Annotation 的“零配置”方式:使用@Aspect、@Pointcut等 Annotation 来标注切入点和增强处理。基于 XML 配置文件的管理方式:使用 Spring 配置文件来定义切入点和增强点。1、基于 Annotation 的“零配置”方式。(1)、首先启用 Spring 对 @AspectJ 切面配置的支持。[java]?/a906998248/article/details/7514969view plain/a906998248/article/details/7514969copy?xml?version=1.0?encoding=UTF-8??beans?xmlns=/schema/beans??xmlns:xsi=/2001/XMLSchema-instance??xmlns:aop=/schema/aop??xsi:schemaLocation=/schema/beans??/schema/beans/spring-beans-3.0.xsd??/schema/aop??/schema/beans/spring-aop-3.0.xsd??!--?启动对@AspectJ注解的支持?--??aop:aspectj-autoproxy/?/beans?如果不打算使用 Spring 的 XML Schema 配置方式,则应该在 Spring 配置文件中增加如下片段来启用@AspectJ 支持。[java]?/a906998248/article/details/7514969view plain/a906998248/article/details/7514969copy!--?启用@AspectJ?支持?--?bean?class=org.springframeword.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator?/?(2)、定义切面 Bean。当启动了@AspectJ 支持后,只要在 Spring 容器中配置一个带@Aspect 注释的 Bean, Spring 将会自动识别该 Bean 并作为切面处理。[java]?/a906998248
文档评论(0)