spring核心-------IOC控制反转的理解
- 控制反转IOC (Inversion of Control),是一种设计思想,依赖注入DI(Dependency Injection)是实现IoC的一种方法。
- 在没有IOC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖关系完全硬编码在程序中,对象的创建是程序自己控制
- 控制反转后将对象的创建转移给第三方
- 控制反转:获得依赖对象的方式反转了,由主动编程变成被动的接收
控制反转IOC的实现
IOC是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在spring中实现控制反转的是ioc容器,其实现方式是依赖注入
(之前学习过mybatis框架,发现mybatis其实也是通过描述(xml/注解))来实现sql的映射。
简单的一个IOC例子
依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.13.RELEASE</version> </dependency> 实体类
public class User { private int id; private String name; private String pwd; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
xml
<?xml version="1.0" encoding="UTF-8"?>
<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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--使用xml来创建对象-->
<!--
bean
id=变量名
class=new的对像
property 相当于给属性赋值
value:基本类型赋值
ref:引用类型赋值
-->
<bean id="user" class="pojo.User">
<property name="id" value="8"></property>
<property name="name" value="denghaunyin"></property>
<property name="pwd" value="123456"></property>
</bean>
</beans>
spring容器生产对象,获取对象
//xml形式,容器生产对象,获取spring的上下文
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");
//我们的对象现在都在spring中管理了,我们要是用直接去spring上下文中去取
applicationContext.getBean("user");
对IoC的理解
对象之前是由程序员创建的,现在是有spring哦容器创建的,对象的属性也是有spring来设置的。
控制:谁来控制对象的创建,传统程序的对象是由程序本身创建的,使用spring后,对象是有spring创建的
反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:对象的属性的设置spring就是利用set方法进行注入的
IOC:对象由主动编程变成被动的接收
IOC:对象由spring来创建、管理、装配