IOC 的概念和作⽤
IOC 名词解释:作用是解耦,使用IOC容器管理项目组件之间的耦合关系
IOC(中文释义:控制反转)是Spring框架的核心思想之一,主要用于解耦。IOC是指创建对象的控制权转移给Springbean框架进行管理。由Spring框架根据配置文件或注解等方式,创建bean对象并管理bean对象之间的依赖关系。使对象之间形成松散耦合的关系,实现解耦。
- 控制:指的是对象创建(实例化,管理)的权力
- 反转:控制权交给外部环境(Spring框架,IOC容器)
IOC主要作用是解耦,那么要怎么解耦呢?
⼯⼚模式解耦
演示:以解耦⽅式维护三层之间的依赖关系
提示:把三层的对象都使⽤配置⽂件配置起来,当启动服务器应⽤加载的时候,让⼀个类中的⽅法,通过读取配置⽂件,把这些对象创建出来并存起来。在接下来的使⽤的时候,直接拿过来⽤就好了。 那么,这个读取配置⽂件,创建和获取三层对象的类就是⼯⼚。
控制反转
1.存哪里
分析:由于我们是很多对象,肯定要找个集合来存;这时候有 Map 和 List 供选择,在应⽤加载时,创建⼀个 Map,⽤于存放三层对象, 我们把这个 map 称之为容器。
2、还是没解释什么是⼯⼚?
⼯⼚就是负责给我们从容器中获取指定对象的类,这时候我们获取对象的⽅式发⽣了改变。
原来: 我们在获取对象时,都是采⽤ new 的⽅式,是主动的。
现在: 我们获取对象时,同时跟⼯⼚要,有⼯⼚为我们查找或者创建对象,是被动的。
这种被动接收的⽅式获取对象的思想就是控制反转,它是 spring 框架的核⼼之⼀
SpringIOC 解决程序耦合
准备 spring 的开发包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.29</version>
</dependency>
</dependencies>
创建业务层接⼝和实现类
基于 XML 的配置
主配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
在xml文件中添加坐标
<!-- 配置 service -->
<bean id="userService" class="com.apesource.service.UserServiceImpl">
</bean>
<!-- 配置 dao -->
<bean id="userDao" class="com.apesource.dao.UserDaoImpl"></bean>
测试配置是否成功
public static void main(String[] args) {
//1.创建spring核⼼对象并加载主配置⽂件
ApplicationContext applicationContext = new ClassPathXmlApplicati
onContext("beans.xml");
//2.向spring容器索要对象
IUserService service = (IUserService)applicationContext.getBean("u
serService");
IUserDao dao = (IUserDao)applicationContext.getBean("userDao");
//3.调⽤⽅法
service.insert();
dao.insert();
}