`
H_eaven
  • 浏览: 32205 次
  • 性别: Icon_minigender_1
  • 来自: 鲨堡
文章分类
社区版块
存档分类
最新评论

浅析org.springframework.aop.framework包设计

阅读更多
写在前面:类的设计图见附件

本文不详细介绍AOP相关概念,比如Concrn(关注点),Aspect(方面),Adivce(通知),Pointcut(切入点),Joinpoint(连接点),AOP实现策略, 不同的AOP实现.但熟悉这些概念是基本的前提条件,相关概念可以查找Google,参考资料查到,Development.Without.Ejb中的第八章<<基于AOP概念的声明性中间件>>值得一读,其中讲到了Spring AOP框架的实现特点:AOP实现策略可以是动态代码,动态字节码. 运行时AopProxy对象的真实存在等.

我们主要关注Spring AOP框架核心org.springframework.aop.framework包的设计.
核心类介绍:
org.springframework.aop.framework.Advised此接口进行织入的准备工作,对那个Target使用什么Adivce在那些Pointcut上进行增强,都在此表达,如果理解成源代码级别的织入动作我感觉也不为过.

org.springframework.aop.framework.AopProxy此接口是Target被增强后的对象,
org.springframework.aop.framework.AopProxyFactory此接口是个工厂接口,此工厂根据Advised中提供的信息或者使用动态代理,或者使用动态字节码来生成AopProxy对象.
其它的接口,抽象类,具体类从名字上都能分辨出来.
org.springframework.aop.framework.Advised.ProxyConfig 代理配置类
org.springframework.aop.framework.Advised.AdvisedSupport 接口Advised的实现类,除此主要功能外,还附加上了一些便利功能.
org.springframework.aop.framework.Advised.DefaultAopProxyFactory
org.springframework.aop.framework.Advised.JdkDynamicAopProxy  接口AopProxy动态代理方式实现类
org.springframework.aop.framework.Advised.Cglib2AopProxy 接口AopProxy动态字节码方式实现类
org.springframework.aop.framework.Advised.ProxyFactory  编程方式的便利类
org.springframework.aop.framework.Advised.ProxyFactoryBean 配置方式的便利类
org.springframework.aop.framework.Advised.AdvisorChainFactory 对多个Advisor的管理
其它类都是工具类,异常类,或功能性类.
如果单看上面的描述应该是比较清晰的,但事实上org.springframework.aop.framework包中的类之间的关系看上去是比较复杂的,至少第一眼看上去是.

原因在于:ProxyConfig对AopProxyFactory的引用,这个引用困扰了我一段时间,我现再所能想到的就是这个类的关系设计图应该不是第一次设计就设计成这样子的,而是经过了演变,有了最基本的设计基础,然后增加了这个引用.
因为在AdvisedSupport增加了此便利方法:protected synchronized AopProxy createAopProxy(), 此便利方法的主要目的为它的扩展类ProxyFactory,ProxyFactoryBean服务.
ProxyFactoryBean实现了FactoryBean接口,这里可以忽略它所实现的BeanFactoryAware,AdvisedSupportListener,它的目的很明确,就是为配置方式提供便利,获得一个AopProxy对象.
ProxyFactory类的存在也困扰我一段时间,因为它几乎找不到对应的概念对应物,能解释通的在于它为编程方式使用Aop框架提供了便利方式,如果基本的标准作法需要三个角色来完成这项任务:源材料的准备-AdvisedSupport,工厂对象-AopProxyFactory,产品-AopProxy,那么此时ProxyFactory身兼三职:1:继承自AdvisedSupport;2:AdvisedSupport内部已经有了AopProxyFactory功能,AdvisedSupport.createAopProxy()方法就是为了此时而存在;3:实现了AopProxy接口,可以直接转型为AopProxy类型.

org.springframework.aop.framework包是Aop框架的实现,
其它包包括如:对Aop核心概念的完整实现,与Ioc框架的集成,Aspectj风格实现,注解风格等功能实现.


  • 大小: 87.2 KB
  • 大小: 40.2 KB
分享到:
评论

相关推荐

    org.spring-framework-3.0.4. 所有jar

    org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....

    aopalliance-1.0.jar,org.springframework.aop-3.0.0.RELEASE.jar

    aopalliance-1.0.jar,org.springframework.aop-3.0.0.RELEASE.jar,org.springframework.jdbc-3.0.0.RELEASEorg.springframework.beans-3.0.0.RELEASE.jar等

    org.springframework.core.jar

    同时,`org.springframework.aop.support`提供了动态代理实现,支持AOP功能,如切面创建、通知定义等。 5. **排序与比较**:`org.springframework.core.order`和`org.springframework.core.type`包提供了排序算法和...

    org.springframework.web的jar包.zip

    在Java开发领域,Spring框架以其强大的功能和灵活的设计闻名,而`org.springframework.web`包是Spring框架中的一个重要部分,它提供了处理HTTP请求和响应的核心工具,以及对WebSocket的支持。在本篇文章中,我们将...

    spring3.0.5 所有jar文件

    org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE.jar org.springframework....

    org.springframework.web.jar

    9. **Integration with other Spring Modules**:`org.springframework.web.jar`与Spring框架的其他模块紧密集成,如Spring Core、Spring Beans、Spring AOP等,共同构建出一个完整的应用框架。 总的来说,`org....

    spring3.1 官方全部jar包

    org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org.springframework.context....

    org.springframework.test-3.0.2.RELEASE.jar

    `org.springframework.test-3.0.2.RELEASE.jar`正是这个模块的实现包,它包含了执行Spring测试所需的所有类和资源。 二、关键组件与功能 1. **ApplicationContextLoader**:该组件负责在测试环境中加载Spring的应用...

    Spring所需jar包

    org.springframework.aop-3.0.0.RELEASE.jar org.springframework.asm-3.0.0.RELEASE.jar org.springframework.aspects-3.0.0.RELEASE.jar org.springframework.beans-3.0.0.RELEASE.jar org.springframework....

    spring3.1.1jar及其关联jar

    org.springframework.aop-3.1.1.RELEASE org.springframework.asm-3.1.1.RELEASE org.springframework.aspects-3.1.1.RELEASE org.springframework.beans-3.1.1.RELEASE org.springframework.context.support-3.1.1....

    org.springframework.web.struts-3.1.0.M2.jar

    《Spring与Struts整合——基于org.springframework.web.struts-3.1.0.M2.jar的实践探索》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,以及丰富的模块支持,成为了广大开发者青睐的框架...

    org.springframework.asm-3.0.5.RELEASE.jar

    总结,org.springframework.asm-3.0.5.RELEASE.jar是Spring框架中的重要组成部分,负责处理字节码生成和修改,是实现Spring AOP和CGLIB功能的基础。了解并掌握ASM库的使用,有助于提升对Spring框架的深度认知,从而...

    org.springframework.aop-3.1.0.M2

    org.springframework.aop-3.1.0.M2

    org.springframework.aop-3.0.0.M3.jar

    org.springframework.aop-3.0.0.M3.jar

    org.springframework.context_3.0.5.release.jar.zip

    而`org.springframework.context`包是Spring框架的核心部分,它提供了上下文环境(ApplicationContext)以及与之相关的服务。在本文中,我们将深入探讨`org.springframework.context_3.0.5.release.jar`这个特定版本...

    spring3.0.0相关jar包

    org.springframework.aop-3.0.0.RELEASE org.springframework.asm-3.0.0.RELEASE org.springframework.aspects-3.0.0.RELEASE org.springframework.beans-3.0.0.RELEASE org.springframework.context.support-3.0.0....

    org.springframework.aop-sources-3.0.5.release.jar

    org.springframework.aop-sources-3.0.5.release.jar

    org.springframework.web.struts-sources-3.0.4.RELEASE.jar

    《Spring与Struts整合:深入理解org.springframework.web.struts-sources-3.0.4.RELEASE.jar》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,而Struts则以其优秀的MVC架构模式,共同构建...

    spring mvc 3.0.5工程所需包整合

    org.springframework.aop-3.0.5.RELEASE.jar,org.springframework.asm-3.0.5.RELEASE.jar,org.springframework.aspects-3.0.5.RELEASE.jar,org.springframework.beans-3.0.5.RELEASE.jar,org.springframework....

    SpringMVC开发jar包

    org.springframework.aop-3.1.0.RELEASE.jar org.springframework.asm-3.1.0.RELEASE.jar org.springframework.aspects-3.1.0.RELEASE.jar org.springframework.beans-3.1.0.RELEASE.jar org.springframework....

Global site tag (gtag.js) - Google Analytics