目录
SpringIOC
IOC容器底层实现原理
- IOC容器中非常核心的接口 BeanFactory
- BeanFactory
- Bean对象 Factory工厂
IOC容器基本的概念:控制反转
把对象的创建过程与使用统一都交给我们的Spring来进行原理。
不需要开发者自己去new对象
- IOC容器底层实现技术:反射技术、解析xml、工厂模式
- IOC作用 降低我们代码的耦合度。
创建对象的方式
1.单独new方式---耦合度太高了
每次单独new对象,没有实现统一管理对象,如果后期userDao的名称信息发生变化的情况下,需要改变的引用地方比较多,耦合度太高。
2.工厂模式---降低我们耦合度
概念:统一的管理和维护我们每个对象创建与使用的过程。
不需要自己new对象。
3.反射的方式
降低代码的-耦合度
SpringIOC容器底层实现原理
反射+工厂模式+解析xml技术实现
1.使用解析xml技术 解析spring.xml配置文件;
2.获取<bean id=”” class=””/> 类的完整路径地址
3.使用到反射技术初始化对象
4.需要使用工厂模式封装初始化对象
IOC核心的接口
- IOC的核心思想底层基于反射+工厂模式实现
- Spring提供IOC容器实现两种方式:
- BeanFactory IOC容器基本的实现,是spring内部自己使用的接口,不提供给开发者使用。(加载配置文件过程的时候,不会创建对象,当我们在获取对象的时候才会获取创建对象。)
- ApplicationContext BeanFactory 接口的子接口,提供更多的强大功能,适合于开发者使用。
当我们在加载配置文件的过程中,就会将配置文件中的对象创建。
在做服务器端开发的时候,使用ApplicationContext 比较多,因为所有bean初始化操作在项目启动完成之前都已经初始化了。
ApplicationContext主要实现类
- ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件
- FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件
- ConfigurableApplicationContext 是ApplicationContext的子接口,包含一些扩展方法
- refresh()和close()让ApplicationContext具有启动、关闭和刷新上下文的能力。所以要关闭ApplicationContext需要new此接口的对象调用close()方法
- WebApplicationContext 专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作