文档章节

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
粉丝 8
博文 352
码字总数 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

没有更多内容

加载失败,请刷新页面

加载更多

AbstractOwnableSynchronizer 抽象类 源码(java.util.concurrent.locks)

java.util.concurrent.locks.AbstractOwnableSynchronizer 源码: package java.util.concurrent.locks;public abstract class AbstractOwnableSynchronizer implements java.io.S......

狼王黄师傅
3分钟前
0
0
在MaxCompute上分析IP来源的方法

摘要: 在MaxCompute上分析IP来源和供应商 淘宝IP库 淘宝IP地址库官网地址http://ip.taobao.com/,其查询接口[http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]](http://ip.taob...

阿里云官方博客
13分钟前
0
0
死灰复燃的Security

一直以来,Spring系列给人的感觉都是快速,简洁,好理解,易操作.但Security是一个特例,这个框架相比而言,首先就是复杂,其次是灵活性也不够.好在于是Spring出的,因此与Spring配合比较好.并且在S...

melon_jj
25分钟前
1
0
druid 和 HikariCP 的简单配置

maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.14</version> </dependency>......

晨猫
29分钟前
0
0
安装RabbitMQ(一)

安装RabbitMQ(一) 安装Erlang (https://packages.erlang-solutions.com/erlang/) 添加EPEL源 [root@bogon ~]#cd /usr/local[root@bogon local]#rpm -Uvh https://dl.fedoraproject.org/pub......

keppy
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部