Spring study 1-AOP 动态代理学习

Spring study 1-AOP 动态代理学习

In Beijing on 2007-6-10

 

 

最近开始了学习Spring,再学习和实现中遇到了一些问题,记录下来希望大家共同探讨。

曾经在以前了解过Spring的一些相关内容,学习了它的一些思想,但是不曾深入学习以及进行实践。在上个月参加完成软考以后,在平时有了些空闲时间,便有了再次学习spring的计划。本次学习主要的参考书籍为 Spring in action,通过学习中遇到的种种问题,记录下来,以便可以回顾自己的学习的过程。

我们知道Spring提供了代理功能,可以很好的支持AOP编程。实现代理功能有两种方式,一种为声明ProxyFactoryBean代理类,定义它的Target属性,再通过interceptorNames属性定义其各种切面(采用Spring in action 中的翻译方式)。此方式可以灵活的调整各个配置参数,不足的地方为我们不能如此劳累的定义每一个需要在Spring中使用的bean。第二种代理方式为声明BeanNameAutoProxyCreator类,同ProxyFactoryBean一样定义其interceptorNames属性,再通过beanNames属性定义其匹配的代理类型,从而实现自动为配置文件中匹配beanNames属性的bean实现代理功能。

Spring in action 书中,定义了一个简单的例子,也没有提供完整的代码,另外对具体应用范围也没有很清除的进行阐述。这里依据我做的一些试验进行补充说明。

1、            实现自动代理必须通过ApplicationContext接口类进行才可以,不能通过BeanFactory方式实现。(注-没有进一步研究,但是直接通过BeanFacotry装配是不可以实现的)

2、            被实现代理的Bean可以是使用接口的类,也可以是没有实现接口的普通类,但如果你的类实现了接口,你必须使用接口声明方式从ApplicationContext获取Bean,没有实现接口类的Bean则直接通过类声明的方式获取Bean。这里存在一个问题,如果你的类实现了某个接口,但是一些不是实现接口的方法则无法使用自动代理的功能(是否有些不太灵活)。

3、            使用接口方式实现自动代理是直接采用jdk方式实现的,而采用类方式则是使用cglib类库实现,因此需要在类路径中加入cglib类库文件。

4、            spring1.2版本,还发现了一个bug,我声明的Advise(通知,采用Spring in action 译法),在实现自动代理中,Advise本身把自己也给代理了,在版本2以后,看来已经修复了此问题。

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值