文档章节

IOC-->IOC+AOP-->热插拔的系统架构实现演化

o
 onedotdot
发布于 2017/08/17 18:28
字数 690
阅读 4
收藏 0
这段时间通过对Spring源码的研究,大家都清楚Spring中最重要的两个概念IOC、AOP这两个是形影不离的两个东西。通过Spring让我们一步一步的推出软件架构从IOC-->IOC+AOP-->热插拔系统架构演化。

 

第一步:

   我们一开始两个对象直接调用的时候是用直接调用的方式调用如下图

   这种的调用方式如果两个对象只要有一个对象更改就要改变所以这样的调用方式不够灵活。如何解决这个问题呢?接下来下一步介绍。

第二步:

   上面说了我们把两个对象绑死了现在我们就要打破这个“死”关系,如何改变这个状态了加入第三方让第三方来实现两个对象直接的调用管理。如下图:

   这样一来我们就可以把各个对象直接不用绑死了加入了第三方的东西来实现两个对象直接的调用。现在解决了对象与对象直接调用的耦合。但是当对象一多了我们在对象中有一些公共的方法这时候我么会将怎么做了?没错将这些公共的抽出来然后将这些公共的方法放到一个公共对象中。例如每个对象都用到日志这个方法插入到每一个对象的方法中。下面我就为大家介绍如何做到这个的。

第三步

   上一步给大家讲了我这一步将要吧公共的方法或者对象抽出来然后再动态的加入到业务对象中。如下图:

   对没错就是用AOP来实现了动态的给业务颗粒对象加入公共颗粒对象。为了让这个更灵活我们下一步就加入XML配置文件。

第四步

   上一步让业务颗粒在代码上灵活了现在为了让灵活更加完善我们就加入XML来读取对象把这些对象放入到不同的两个对象颗粒池中如图:

第五步

   完善XML的读取和实例化对象实现热插拔。如下图:

总结:

   从一开始一个对象到大规模业务颗粒和公共颗粒的解耦造就了软件的灵活,如果再加上可视化的配置界面我们就可以让软件的开发成本降为0元。只要有个项目过来我们配一配我们就可以弄出一个软件来。

转载请注明来源:http://blog.csdn.NET/gwblue/article/details/45967793

本文转载自:http://blog.csdn.net/gwblue/article/details/45967793

共有 人打赏支持
o
粉丝 6
博文 327
码字总数 14350
作品 0
朝阳
IoC+AOP的简单实现

对EnterLib有所了解的人应该知道,其中有一个名叫Policy Injection的AOP框架;而整个EnterLib完全建立在另一个叫作Unity的底层框架之上,我们可以将Unity看成是一个IoC的框架。对于一个企业应...

长平狐
2012/09/04
111
0
EnterLib PIAB又一个BUG?

在《这是EnterLib PIAB的BUG吗?》一文中我们讨论了PIAB关于抽象基类的BUG,今天又发现了一个新的问题。问题的起因源于《IoC+AOP的简单实现》这篇文章,因为文中给出的解决方案仅仅支持构造器...

长平狐
2012/09/04
213
0
软件定义网络(SDN)系统--DaoliNet

DaoliNet是道里云公司自主研发的为基于Docker的应用平台量身打造的动态敏捷高效网络技术,DaoliNet将以全新的技术变革,通过技术开源模式,为全球Docker容器网络贡献价值。 Docker是目前最火...

匿名
2016/06/18
2.9K
2
DaoliNet 开源,为 Docker 容器提供动态高效的链接

5月27日,DaoliNet开源项目发布会及国内Docker社群线下沙龙在北京举行。此次发布会上,道里云CEO毛文波博士将多年来精心打造的Docker网络技术DaoliNet无偿贡献给开源社区,他希望更多企业与开...

oschina
2016/06/18
4
0
Java应用架构的演化之路

当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不...

vshcxl
2016/04/28
110
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Go语言_通神之路(2)

1、包 每个Go程序都是由包构成,从main包开始运行,就是我上一篇讲到的,都是从main函数开始执行,但是必须在main包下面! package mainimport ( "fmt" "math/rand")func ...

木九天
昨天
5
0
51.php-fpm的pool 慢日志 open_basedir 进程管理

12.21 php-fpm的pool 12.22 php-fpm慢执行日志(测试时报错) 12.23 open_basedir 12.24 php-fpm进程管理 12.21 php-fpm的pool: php-fpm里的pool也叫池子,咱们之前加入过www的配置,这个w...

王鑫linux
昨天
0
0
java内存模型概述

1、Java虚拟机运行时数据分区图 程序计数器:线程私有,是一块较小的内存空间,它是当前线程所执行的字节码文件的行号指示器 java虚拟机栈:线程私有,其生命周期与线程相同,这也就是我们平...

京一
昨天
2
0
shell学习之test语法

因为if-then语句不能测试退出状态码之外的条件,所以提供了test, 如果test命令中列出的条件成立,test命令就会退出并返回退出状态码0;如果条件不成立,test命令就会退出并返回非零的退出状态...

woshixin
昨天
0
0
openJDK之如何下载各个版本的openJDK源码

如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定版本的openJDK,它们的下载链接在哪呢? 1.openJDK的项目 链接...

汉斯-冯-拉特
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部