Spring基础(二):IOC概念引入
2023-02-18 16:40:56 时间
IOC概念引入
简单的说就是,创建对象的权利,或者是控制的位置,由JAVA代码转移到spring容器,由spring的容器控制对象的创建,就是控制反转,spring创建对象时,会读取配置文件中的信息,然后使用反射给我们创建好对象之后在容器中存储起来,当我们需要某个对象时,通过id获取对象即可,不需要我们自己去new。
一句话:创建对象交给容器
Spring解耦合的原理
图解
1、创建maven项目,设置maven
先创建一个空项目
名字可以是spring_all
在项目下创建模块 名字可以是spring_test_01
2、pom.xml中导入spring依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.5</version>
</dependency>
</dependencies>
四个依赖介绍
- spring-context 上下文,容器
- spring-beans 创建对象
- spring-core 核心jar
- spring-expression 表达式jar
但是事实上,我们导入spring-context的时候,会自动导入其他依赖的jar,自动进行了依赖传递
所以,导入一个spring-context 依赖也可以
依赖传递关系图如下
为了方便测试,我们导入Junit测试依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
3、在项目中定义一个接口和实现类
EmpDao接口和实现类
2、接口中定义一个方法并在实现类中实现
接口
实现类
在spring配置容器中的对象
4、创建spring配置文件
文件名没有明确要求,暂时可以叫spring
在spring.xml中配置一个需要由容器初始化的对象
5、测试通过容器获取对象
相关文章
- 【6】VScode 无法在终端输入问题,提示:无法在只读编辑器中编辑
- 【7】vscode不同的窗口样式和颜色插件peacock、设置打开多个窗口、md文件打开方式和预览以及插入目录
- 【8】同步vscode配置和插件【导入导出】、再也不用担心换电脑重新安装插件了
- 解决:VScode中 import 后出现no module的问题
- 【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)
- 【1】Pycharm 主题设置推荐Material Theme UI以及编辑环境配置(字体大小和颜色)
- 【2】Pycharm插件推荐,超级实用!每个小trick都可以快速提升变成效率!
- 【3】Pycharm超详细基础设置,autopep8 安装规范化程序,每个小trick都可以快速提升变成效率,超级实用!
- 解决: DECODER_ERROR_CLASSES += (brotli.error,) ttributeError: module ‘brotli‘ has no attribute ‘error‘
- 【5】数据可视化pygal,画出美观的图表
- ServiceMock录制回放
- gym.spaces中找不到prng解决方案
- 身为测试人员如何推动开发做单元测试
- 一些提供办公效率的软件(clover、f.lux、幕布),老赞了!
- 【1】Anaconda安装超简洁教程,配置环境、创建虚拟环境、添加镜像源
- 自古以来,代理程序都是兵家折戟之地
- ConcurrentDictionary字典操作竟然不全是线程安全的?
- 两将军问题和TCP三次握手
- 【3】jupyter notebook【修改主题、字体、字号、代码自动补全、变更工作目录、添加目录插件、解决工具栏隐藏问题、修改默认浏览器、默认打开位置】
- 【4】jupyter notebook快速入门、以及常用快捷键使用