码迷,mamicode.com
首页 > 其他好文 > 详细

容器+AOP 实现动态部署(一)

时间:2015-05-28 23:15:12      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:aop

集合大家基本都有个认识吧,如:JDK中的List Set Map等,都是很好的集合容器和集合有什么不同呢,我个人认为:

 容器应提供公共的服务

 容器中的服务可以操作容器中所有对象

 容器中选择某个对象可以操作对象的属性和方法

 

详情请看下图

技术分享


空白处右键容器出现容器提供的服务,容器对象右键出现对象的属性或方法。最形象的就是我们Wind的资源管理器的模型。


有了容器的基本概念后,再看看看我们最普通的开发方式一个系统开发业务颗粒,免不了要有日志,事务一些的参杂。最普通的写法我们是怎么做的呢

常见方式 

多个地方包含相同代码的软件

 技术分享

以上写法相信大家已经发现不足之处了。若要修改,则需要打开3各地方进行修改,不能做到一处修改。

为了解决这个问题,我们通常会采用将如图 1 所示的相同代码部分定义成一个方法,然后在 3个代码段中分别调用该方法即可。在这种方式下,软件系统的结构如图 2 所示。

对象引用形式

 技术分享

这种方法基本可以这样做能够解决大部分应用场景。但是还是没有脱离了对封装对象的依赖。


AOP方式

这时候AOP的一种思想可以解决该问题

通常的AOP这样写

技术分享

 

若是再来一个切面颗粒,代码首先是要修改的,其次还要进行相关配置,还是有影响的

经过一些修改和设计,我们将 AOP 与切面颗粒进行隔离,这样就可以达到切面颗粒可以随时的增删,AOP只进行相关的一些配置,代码无需修改,这样达到了热部署的效果,效果图如下3

技术分享

 

 

最左边为业务容器,右边为切入颗粒容器,中间为AOP集合,存放的是业务域切面容器的切入关系.若要增加切面颗粒,只要将切面颗粒配置到切面容器中。

在AOP集合中进行相关配置,或默认配置即可达到切入效果。

 

小结:

对于这块的容器和AOP组合的效果,是经过了多次的设计和修改,形成最终版本,使用一个AOP容器管理了多个切面颗粒,为多个业务颗粒进行增强。

容器+AOP 实现动态部署(一)

标签:aop

原文地址:http://blog.csdn.net/han_yankun2009/article/details/46135993

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!