Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP(二)

2014-11-23 23:22:34 · 作者: · 浏览: 2
ssImp.getClass().getInterfaces(),
handler);

proxy.processBusiness();

程序输出如下:
INFO: method stats...
here is business logic
INFO: method ends...

至此我们的第一次小尝试算是完成了。可以看到,采用AOP之后,日志记录和业务逻辑代码完全分开了

,以后要改变日志记录的话只需要修改日志记录处理器就行了,而业务对象本身(BusinessObject)无需做任何修改。并且这个日志记录不会造成重复代码了,所有的商业处理对象都可以重用这个日志处理器。


当然在实际应用中,这个例子就显得太粗糙了。由于JDK的动态代理并没有直接支持一次注册多个InvocationHandler,那么我们对业务处理方法既要日志记录又要性能统计时,就需要自己做一些变通了。一般我们可以自己定义一个Handler接口,然后维护一个队列存放所有Handler, 当InvocationHandler被触发的时候我们依次调用自己的Handler。所幸的是目前几乎所有的AOP Framework都对这方面提供了很好的支持.这里推荐大

家使用Spring( http://www.springframework.org/).

本人初学AOP,文中不妥之处欢迎大家拍砖。