如何能理解 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
专知会员服务
102+阅读 · 2020年7月1日
【干货书】现代数据平台架构,636页pdf
专知会员服务
257+阅读 · 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博客
30+阅读 · 2019年7月6日
【机器学习】深入剖析机器学习中的统计思想
产业智能官
16+阅读 · 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
24+阅读 · 2019年11月24日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
9+阅读 · 2018年1月4日
VIP会员
相关VIP内容
相关资讯
听说你还没读过 Bert 源码?
AINLP
7+阅读 · 2019年8月7日
阿里技术大牛:一份架构师成神路线图!
51CTO博客
30+阅读 · 2019年7月6日
【机器学习】深入剖析机器学习中的统计思想
产业智能官
16+阅读 · 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会员