1>控制反转(inversion of control,缩写为IOC),是面向对象编程中的一种设计原则,用来减少代码直接的耦合度;
2>把对象创建和对象之间的调用过程,交给spring进行管理;
目的:为了耦合度减低

如:

1> IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2> spring提供IOC容器实现的2种方式(也就是2个重要的接口)
①BeanFactory
IOC容器基本实现,是spring内部的使用接口,不提供给开发人员进行使用(我们也可以用)
②ApplicationContext
BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用
以上两个接口作用相似,都是通过加载xml配置文件,通过工厂创建对象
BeanFactory:
加载配置文件时,不会去创建bean
只有在使用对象时,才会去创建对象
如:
- public class TestSpring01 {
- public static void main(String[] args) {
- //BeanFactory加载配置文件时,不会创建对象
- BeanFactory context = new ClassPathXmlApplicationContext("bean1.xml");
- //getBean表示在使用对象,此时BeanFactory才会去创建对象
- User user = context.getBean("user", User.class);
- user.add();
- }
- }
ApplicationContext:
加载配置文件时,就会去创建bean对象
在实际开发中,ApplicationContext更合适,因为耗时耗资源的操作,都交给Tomcat,项目启动时,去完成这些操作
IDEA中,在类名上,按Ctrl+h,打开类的结构如图:

两个常用的实现类,区别如下:
FileSystemXmlApplicationContext:对应盘中的路径,如从C盘开始写(绝对路径)
ClassPathXmlApplicationContext:类路径(相对路径)
Bean管理指的是2个操作:
①spring创建对象
②spring注入属性
①基于xml配置文件方式实现
②基于注解方式实现