1. IOC概念
1.1 概念简述1.2 示例详解
1.2.1 代码块示例1.2.2 IOC示例详解 2. IOC使用
2.1 添加依赖2.2 向Spring容器中配置对象2.3 从Spring容器中获取对象
1. IOC概念 1.1 概念简述
控制反转:指对一个对象的控制权的反转。开发者将对象的控制权交由Spring容器去管理。
1.2 示例详解 1.2.1 代码块示例@Data
public class Book {
private Integer id;
private String name;
private Double price;
}
public class User {
private Integer id;
private String name;
private Integer age;
public void doSth() {
Book book = new Book();
book.setId(3);
book.setName("西游记");
book.setPrice((double) 6);
}
}
1.2.2 IOC示例详解
Book 对象的控制权在 User 对象里边,这样的话Book 和 User 高度耦合。如果在其他对象中需要使用 Book 对象,得重新创建,即对象的创建、初始化、销毁等操作,统统都要开发者自己来完成。如果能够将这些操作交给容器来管理,开发者就可以极大的从对象的创建中解脱出来。使用 Spring 之后,我们可以将对象的创建、初始化、销毁等操作交给 Spring 容器来管理。即项目启动时,所有的 Bean 都将自己注册到 Spring 容器中去(如果有必要的话),然后如果其他 Bean 需要使用到这个 Bean ,则不需要自己去 new,而是直接去 Spring 容器去要。
2. IOC使用2.1 添加依赖以Xml文件注入Bean为例来做演示,使用AbstractXmlApplicationContext来获取Spring容器。
先创建一个普通的 Maven 项目,然后引入 spring-context 依赖:
2.2 向Spring容器中配置对象org.springframework spring-context 5.1.9.RELEASE
在resources目录下创建一个spring的配置文件:applicationContext.xml。(注意,一定要先添加依赖,后创建配置文件,否则创建配置文件时,没有模板选项)。
2.3 从Spring容器中获取对象
在main方法中使用ClassPathXmlApplicationContext来加载配置文件,这时Spring容器会将配置文件中定义的Bean全部创建并管理。此后,我们只需要从Spring容器中获取该对象即可,无需开发者自行创建对象;从而完成了对象控制权的反转。
使用ClassPathXmlApplicationContext是去classpath下加载配置文件;
我们也可以使用 FileSystemXmlApplicationContext,它会从操作系统路径下去寻找配置文件。
public class Main {
public static void main(String[] args) {
// 加载Spring的配置文件:Spring容器会自动加载配置文件中定义的Bean
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 从Spring容器中获取对象
Book book = (Book) ctx.getBean("book");
// 输出Spring容器中管理的对象
System.out.println(book);
}
}



