我想对我说清楚。
我阅读了有关AOP概念的信息,并且我知道这是共享交叉服务的好方法。(记录,安全,交易...)
但是,我想对这个想法及其实现发表一些看法。
我读过一些方法,例如AspectJ,JBOSS AOP,以便将AOP与我的业务逻辑同化。
但不是很久以前在这里了吗?
举例来说,我想在我的组件(Java Bean,EJB's等)之间共享日志记录或安全性实现。
为什么我不能使Singleton bean确保它只有一个实例,并且一旦任何组件需要它的日志记录/安全服务,它就会查找并使用它的服务。
为什么我需要理解并拥有所有那些“大”实现,例如Aspectj或jboss AOP?我在这里想念什么?
AOP的想法是将通用逻辑放在一个地方(您的单例解决方案也可以解决),并使它“不可见”(透明)。使用AOP,您的日志记录代码甚至都不是业务逻辑的一部分,而是被“注入”到幕后。
而且它更加动态-您不需要每次都需要登录时调用单例服务。只需配置一次切入点(例如:“ 此软件包中的所有设置器 ”),日志记录将应用于所有现有和新代码。
而且,AOP更加灵活和强大。您可以询问AOP实现:“每次我调用以“ save*
” 开头并带有一个参数的方法时,或“如果返回的方法Customer
引发一个异常子类IllegalAgumentException
,请再次调用该方法”,请启动事务。
AOP不仅仅是对通用逻辑进行分组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句