如何能理解 Spring 框架的思想?

2019 年 7 月 28 日 CSDN


Spring 简述

1.1 什么是 Spring ?

Spring 是一个轻量级的开源的 JavaEE 框架,由作者 Rod Johnson 创建,兴起于 2003 年。目的是为了解决企业级开发的复杂性问题,Spring 出发点就是不重新造轮子,而是使现有的技术或框架更加易于使用。具有简单,易于扩展和维护和低耦合等特点。


Spring 的核心就是控制反转 ( IoC ) 和 依赖注入 (DI)及面向切面编程 (AOP) 。


1.2 什么是 IoC ?

IoC 就是控制反转(Inversion of Control ) 的缩写。它是软件设计中的一种设计原则和思想。可以有效的降低代码的耦合度,便于程序模块之间灵活组织和切换。实现了 "可插拔式" 的接口编程。降低了将来扩展及维护的成本。


IoC 的这种思想原则,可以形象比同于 “好莱坞原则”。不要给我们(好莱坞演艺公司)打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。


比如说,一个大碗儿明星A,在有些小公司演戏,往往可以自己决定要求公司提供什么资源,和什么人搭戏等等,公司就只能顺从大腕儿要求一一满足。这就是说大腕儿决定了他所依赖的资源及其他演员。


而上面这种现象,在好莱坞是不适用的。再大的腕儿,所演的角色及搭配的演员等资源,都是由好莱坞公司来决定的,不是由大腕儿来决定的。这就是说,原来有演员的 **控制权反转 **了,反转交个公司了,由公司决定了!这就是所谓的好莱坞原则,这也正是所谓的 IoC 控制反转的概念。


1.3 什么是 DI ?

DI 为 Dependency Injection 的缩写,即“依赖注入”:组件之间依赖关系由容器在运行期决定。组件的创建都有容器来创建,再由容器来决定各组件之间的依赖关系。各个组件不再自己决定依赖的其他对象。话句话说,就是组件运行所依赖的对象只能是注入进来的对象,注入哪个对象,我就依赖哪个!简称 依赖注入。


再拿上面例子来说,在好莱坞,演员不能再自己决定自己和谁搭戏了,就是自己不再决定自己的依赖对象,而具体演戏时,依赖(搭戏)的是哪个一个演员,由公司分配(注入),公司给你注入是谁,那就和谁演。


依赖注入是 IoC 实现的一种方式描述,IoC 和 DI 各从思想原则和方式上分别描述了解耦的这种编程模式。


通过案例解释 IoC 的优势


2.1 下面来写一个耦合的、依赖具体实现的面向对象案例

这里我们分别定义 显示器类(GrayDisplay.java) 和 主机类(Computer.java),其中主机类中直接依赖并实例化了显示器类。然后客户测试使用类(Test.java)。它们的关系如下:

图片来源于网络


本篇 Chat 全文包含以下内容

  1. IoC 概念

  2. 自定义 spring.xml

  3. 解析 spring.xml 及反射创建 bean 对象

  4. 通过反射组织及注入对象的依赖关系

  5. 通过容器获得 bean 对象

  6. 完整简易版版的自定义 SpringDIY 框架代码实现


想获取完整全文和代码

请扫码查看原文

▼


点击阅读原文,即可直接订阅本场 Chat 参与线上交流!

登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
103+阅读 · 2020年7月1日
【干货书】现代数据平台架构,636页pdf
专知会员服务
264+阅读 · 2020年6月15日
【Manning新书】现代Java实战,592页pdf
专知会员服务
101+阅读 · 2020年5月22日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
108+阅读 · 2020年5月3日
【新书】Python中的经典计算机科学问题,224页pdf
专知会员服务
149+阅读 · 2019年12月28日
听说你还没读过 Bert 源码?
AINLP
7+阅读 · 2019年8月7日
阿里技术大牛:一份架构师成神路线图!
51CTO博客
32+阅读 · 2019年7月6日
【机器学习】深入剖析机器学习中的统计思想
产业智能官
17+阅读 · 2019年1月24日
深度学习线性代数简明教程
论智
11+阅读 · 2018年5月30日
入门 | 机器学习第一课:决策树学习概述与实现
机器之心
4+阅读 · 2018年4月29日
入门 | 通过 Q-learning 深入理解强化学习
机器之心
12+阅读 · 2018年4月17日
文本数据分析(一):基本框架
论智
6+阅读 · 2018年4月9日
学习大纲:两周搭建Demo理解机器学习
人人都是产品经理
5+阅读 · 2017年12月28日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Arxiv
27+阅读 · 2019年11月24日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
9+阅读 · 2018年1月4日
VIP会员
最新内容
世界模型入门:从序贯决策到通用智能体
专知会员服务
6+阅读 · 10月24日
军事域更好使用人工智能的实用指南
专知会员服务
9+阅读 · 10月22日
《衡量语言模型中的作战规划能力》
专知会员服务
14+阅读 · 10月20日
Maven智能系统:帕兰提尔军事人工智能平台详解
专知会员服务
17+阅读 · 10月20日
《测试自动化框架在敏捷软件开发中的角色》
专知会员服务
9+阅读 · 10月20日
俄罗斯如何拦截乌克兰无人机与巡航导弹
专知会员服务
13+阅读 · 10月15日
《武器-目标分配问题:精确与近似求解算法》
专知会员服务
19+阅读 · 10月15日
相关VIP内容
相关资讯
听说你还没读过 Bert 源码?
AINLP
7+阅读 · 2019年8月7日
阿里技术大牛:一份架构师成神路线图!
51CTO博客
32+阅读 · 2019年7月6日
【机器学习】深入剖析机器学习中的统计思想
产业智能官
17+阅读 · 2019年1月24日
深度学习线性代数简明教程
论智
11+阅读 · 2018年5月30日
入门 | 机器学习第一课:决策树学习概述与实现
机器之心
4+阅读 · 2018年4月29日
入门 | 通过 Q-learning 深入理解强化学习
机器之心
12+阅读 · 2018年4月17日
文本数据分析(一):基本框架
论智
6+阅读 · 2018年4月9日
学习大纲:两周搭建Demo理解机器学习
人人都是产品经理
5+阅读 · 2017年12月28日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Top
微信扫码咨询专知VIP会员