2.AOP应用举例
在一般的应用程序开发中,有一些典型的AOP应用,使得开发者可以专注于业务逻辑本身,而不是与之完全无关的一些“方面”。
l首先就是关于前面介绍过的日志输出类的功能,当然前面的例子非常简单,实际上要输出的日志信息中往往有很多的可变参数,这时就需要从被拦截对象的上下文中取出相应的信息进行行为的增强。
l最常用的AOP应用就是关于DB事务的管理了。业务处理成功则向DB提交事务,反之则回滚事务——这是每一个开发者都会写过的代码。但是实际上这种事务的处理是完全独立的“方面”,不依赖于任何逻辑的实现,即任何有关DB的逻辑处理都是要提交或者回滚的,因此关于DB事务管理的功能往往由AOP框架去管理。Spring、Seam、Guice包括EJB应用中的容器管理事务的功能,实质上都是AOP的应用。
l另外关于安全处理的功能,往往是和开发者所开发的逻辑无关的“方面”,因为所有需要判定当前的用户是否有权限执行某段逻辑这样的需求,一般都是同样的处理方式——用户有权限则继续处理,用户无权限则抛出异常。这种情况下为了避免开发者写出大量的if语句,用框架提供的AOP的方式去做安全的判定,应是最佳解决方案。
有关依赖注入设计模式的话题,其实是一个非常广泛的话题,不同的框架对其有着共同或不同的理念,所产生的最佳实践也有相似的一面和各不相同的一面,我们在这里由于篇幅有限,只能做以上的比较粗浅的介绍,大家如有兴趣可以继续通过互联网和各种书籍深入研究这种到目前为止非常成功的设计模式。
(完)