之前一直把Spring当做很高深的东西,没有勇气去尝试,后来做了一个日志框架无奈要使用到Spring AOP来进行自动代理。下面我简单谈谈我对SpringAOP的理解,只有理解了才能很好得使用。
Spring使用容器来管理类,这些容器使用配置文件来灵活配置。Spring来代理这些容器,就是最次封装这些容器,在执行这些容器的时候提前或者延迟执行一些方法。这样就达到了AOP的效果。只不过这些都被Spring来操作了,我们如果能想明白这个道理,自然就会使用AOP了。
我知道的SpringAOP的代理有两种配置方式,我感觉底层实现都是一样的,暂时没有看源码来验证。一种方式:使用Factory手动来填写配置文件来配置,这样需要为每个类都写配置文件来配置。第二种方式:使用Spring的自动代理。Spring自动代理,只需要告诉Spring需要自动代理的容器就可以了。它支持正则表达式来匹配容器的名称。这样就可以批量自动代理容器。
在使用上,我困惑了很长时间,后来恍然大悟。SpringAOP既然叫做自动代理就是说对我们程序编写来说基本没有什么影响,所以从Spring中拿到对象时,自动代理与否,从代理上是看不出来的。获取到的对象已经被代理了,而我们只关心业务的开发,不再管理一些横切方面的问题,比如说日志、事务、验证的问题。大大加快了我们程序的开发。从这一点上看,Spring是一个非常值得我们学习的设计框架。以前同事跟我说学习框架没有用,基础知识才最重要。我觉得框架学习也是很重要的一个内容。不仅仅是从代码实现的角度,更多的是框架设计者能想到的问题,为什么我想不到。这是非常致命的地方。没有创新的想法,很多事情难以做到突破前人。