IOC--IOC+AOP--热插拔的系统架构实现演化
2019独角兽企业重金招聘Python工程师标准>>>
这段时间通过对Spring源码的研究,大家都清楚Spring中最重要的两个概念IOC、AOP这两个是形影不离的两个东西。通过Spring让我们一步一步的推出软件架构从IOC-->IOC+AOP-->热插拔系统架构演化。
第一步:
我们一开始两个对象直接调用的时候是用直接调用的方式调用如下图
这种的调用方式如果两个对象只要有一个对象更改就要改变所以这样的调用方式不够灵活。如何解决这个问题呢?接下来下一步介绍。
第二步:
上面说了我们把两个对象绑死了现在我们就要打破这个“死”关系,如何改变这个状态了加入第三方让第三方来实现两个对象直接的调用管理。如下图:
这样一来我们就可以把各个对象直接不用绑死了加入了第三方的东西来实现两个对象直接的调用。现在解决了对象与对象直接调用的耦合。但是当对象一多了我们在对象中有一些公共的方法这时候我么会将怎么做了?没错将这些公共的抽出来然后将这些公共的方法放到一个公共对象中。例如每个对象都用到日志这个方法插入到每一个对象的方法中。下面我就为大家介绍如何做到这个的。
第三步
上一步给大家讲了我这一步将要吧公共的方法或者对象抽出来然后再动态的加入到业务对象中。如下图:
对没错就是用AOP来实现了动态的给业务颗粒对象加入公共颗粒对象。为了让这个更灵活我们下一步就加入XML配置文件。
第四步
上一步让业务颗粒在代码上灵活了现在为了让灵活更加完善我们就加入XML来读取对象把这些对象放入到不同的两个对象颗粒池中如图:
第五步
完善XML的读取和实例化对象实现热插拔。如下图:
总结:
从一开始一个对象到大规模业务颗粒和公共颗粒的解耦造就了软件的灵活,如果再加上可视化的配置界面我们就可以让软件的开发成本降为0元。只要有个项目过来我们配一配我们就可以弄出一个软件来。
转载请注明来源:http://blog.csdn.NET/gwblue/article/details/45967793
转载于:https://my.oschina.net/newchaos/blog/1512319
IOC--IOC+AOP--热插拔的系统架构实现演化相关推荐
- 解读大型网站系统架构的演化
解读大型网站系统架构的演化 大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段. 作者:李平来源:LEE的博客 前言 一 ...
- 大型网站系统架构的演化
大型网站系统架构的演化 来源:http://www.cnblogs.com/leefreeman/ 声明:作者授权转载. 前言 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的 ...
- 大型网站系统架构的演化【转自飘扬的红领巾】
前言 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的高性能.高可用.安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计思 ...
- 马蜂窝 IM 系统架构的演化和升级
点击上方"马蜂窝技术",关注订阅更多优质内容 今天,越来越多的用户被马蜂窝持续积累的笔记.攻略.嗡嗡等优质的分享内容所吸引,在这里激发了去旅行的热情,同时也拉动了马蜂窝交易的增长. ...
- 抛弃隐晦,明了的理解Spring IOC与AOP
IOC(反转控制) 一个java应用程序是有很多类组成的,这些类相互协作.相互作用来提供应用程序的表现行为.那些被其它类组合提供某些行为的类,称之为其它类的依赖(dependencies).利用软件工 ...
- spring - ioc和aop
1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对象的时候,一般都是直接使用关键字类new ...
- BeanPostProcessor —— 连接Spring IOC和AOP的桥梁
之前都是从大Boss的视角,来介绍Spring,比如IOC.AOP. 今天换个视角,从一个小喽啰出发,来加深对Spring的理解. 这个小喽啰就是, BeanPostProcessor (下面简称 B ...
- Spring IoC、AOP、Transaction、MVC 归纳小结
前言 如果说有什么框架是Java程序员必然会学习.使用到的,那么Spring肯定是其中之一.本篇博客,将根据博主在日常工作中对Spring的使用做一个系统的归纳小结. Spring的一些概念和思想 S ...
- Spring 原理初探——IoC、AOP
前言 众所周知, 现在的 Spring 框架已经成为构建企业级 Java 应用事实上的标准了,众多的企业项目都构建在 Spring 项目及其子项目之上,特别是 Java Web 项目. Spring ...
最新文章
- weblogic学习笔记(1)
- socket编程之inet_addr和inet_ntoa
- C++ Q16: dereferencing
- 数学笔记--初等数学
- rds 数据导入mysql_将数据导入到 Amazon RDS 数据库实例
- C语言中的格式化打印printf/sprintf以及嵌入式printf重定向进行DEBUG
- 稳定服务器头像,WordPress 修复 Gravatar 头像稳定服务器地址
- 【OpenCv】cvWaitKey获取键盘值
- BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
- shell 封装方法_反弹shell逃逸基于execve的命令监控(上)
- 三极管开关为什么工作在饱和区和截至区
- 优盘完整性测试软件,MyDiskTest(U盘扩容检测工具)
- 568A与568B 线序
- 【DPDK】网卡绑定和解绑步骤
- 华为OD机试 - 喊七(Python)
- 揭秘:传统pos机手续费为什么比无卡支付手续费还贵!
- 大聪明教你学Java | 实现邮件发送(以163邮箱向QQ邮箱发送邮件为例)
- 史元春老师组20-21年论文笔记
- Oracle项目管理主数据之WBS
- VScode 写完C程序无法调试运行
热门文章
- python的0基础入门语法_学习小结(1)
- 福大软工 · 第十二次作业 - Beta答辩总结
- npm install 报错 :stack Error: Can't find Python executable python
- hduoj2094产生冠军
- php 商务网站购物车联动地址
- 十六个 HTML,CSS,jQuery,WordPress等快速启动项目样板
- 搜狗拼音输入法大头贴新增几个新的模板,欢迎使用.
- 【我解C语言面试题系列】003 死循环格式问题小结?
- 关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
- 驱动开发基础知识 偶然发现的,很全面