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 框架代码实现

懂这些项目,秒杀90%的AI工程师!

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

想获取完整全文和代码

请扫码查看原文

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

如何能理解 Spring 框架的思想?相关推荐

  1. 【手写系列】透彻理解Spring事务设计思想之手写实现

    事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),Dura ...

  2. 透彻理解Spring事务设计思想之手写实现

    2019独角兽企业重金招聘Python工程师标准>>> 前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原 ...

  3. 轻松理解Spring框架的基本思想

    说起Spring框架,就不得不说J2EE的EJB.年龄稍大一些的Java程序员对J2EE的EJB还是记忆犹新的,当时使用EJB开发大型应用系统非常时髦,Java程序员无不以掌握EJB开发技术为自豪,程 ...

  4. spring框架_一篇文章带你理解Spring框架

    虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是S ...

  5. Spring深入理解-Spring框架设计理念

    导语   Spring框架作为企业中最常用的框架,是为了降低企业级开发的复杂性,现在经过发展它可以做的事情也是越来越多了.但是尽管Spring家族的东西已经越来越多,越来越健全,但是它的核心理念是不变 ...

  6. Spring框架核心思想

    Spring两个核心解决思想方案解析 IOC (Inverstion Object Control)控制反转 / DI (Dependency Injected) 依赖注入 AOP(Aspect Or ...

  7. 理解Spring框架中Bean的作用域

    本篇介绍Spring Bean实例的作用范围,Spring Bean实例的作用范围由配置项scope限定.通过本篇的学习,可以达成如下目标. ● 应用scope配置项配置Bean的作用域 ● 应用单例 ...

  8. 理解Spring面向接口编程思想

    我们都知道java是面向对象的语言: 一个人是一个对象一个物品也是一个对象: 在刚刚接触Spring的时候只知道用Spring来管理咱们的一个个对象,一直知道Spring 提倡的面向接口的编程方式,经 ...

  9. Spring框架【超详细学习笔记】

    文章目录 一.Spring学习目标 1.1 为什么要学习Spring框架? 1.2 主要学什么? 1.3 怎么学? 二.初识Spring 2.1Spring家族 2.2 Spring发展史 2.3 S ...

最新文章

  1. 下划线转驼峰,并且首字母大写
  2. 大数取余的原理和模板
  3. C语言数组元素总和最大的连续子序列的算法(附完整源码)
  4. 取得二进制最右面为1的数
  5. hbuilderx版本怎么更新到新版本_2.9版本快雪迎春更新公告
  6. ceil函数_pyspark常用函数
  7. 360浏览器升级_社畜必备!360浏览器上线“文档”功能 一键开启云办公
  8. 云小店商城源码修复30套模板支持一键对接各大系统
  9. java opencv 提取车牌_OpenCV实现车牌字符分割(C++)
  10. 抢食生鲜,美团最大对手会是拼多多
  11. winRAR 密码暴力破解/清除压缩文件密码工具
  12. 嵌入式系统的开发概述(三星s5p6818系统为例)
  13. 正则匹配0-999区间数字
  14. 【软件工程】第5章 软件需求分析思考题
  15. 基于眨眼状态的在线疲劳检测系统(Matlab-GUI设计)
  16. Axure RP 9笔记
  17. 利用OPC技术实现双网冗余系统的通讯驱动
  18. 2023年广西大学农村发展专业上岸学长经验、参考书推荐
  19. 关于5G系统天线的原理
  20. Iar工程编译和下载的使用教程

热门文章

  1. [delphi]窗口最大化时怎么才能不要把任务栏盖住
  2. 在Axure中通过全局变量实现两个文本框与中继器联动
  3. [论文翻译] Estimation of Image Rotation Angle Using Interpolation-Related Spectral Signatures
  4. [论文阅读] Transformer Transforms Salient Object Detection and Camouflaged Object Detection
  5. c语言求素数_C语言 | 求100~200的素数
  6. 十二月十六日鸿蒙,华为12月16日举行鸿蒙 2.0 手机开发者Beta活动,分享鸿蒙OS2.0设计理念...
  7. 《推荐系统笔记(十六)》tf-idf与基于内容的推荐(简单的酒店推荐)
  8. Linux基于升序链表的定时器
  9. 前端 HTML 获取自定义标签tag 的值方法
  10. element ui 表单验证残留提示处理