11.15 Spring Ioc容器
Ioc容器在Spring当中的地位
地位:
-
Spring
的核心
作用:
-
Spring
通过IoC
容器管理对象的实例化、初始化 -
管理对象从创建到销毁的整个生命周期
管理方式:
-
读取
XML
-
读取
Java
注解
Spring的IoC容器类型
BeanFactory
容器
ApplicationContext
容器
BeanFactory容器
特点:
-
由
org.springframework.beans.factory.BeanFactory
接口定义 -
采用懒加载(
lazy-load
)容器启动快 -
一个
Bean
工厂,主要负责初始化各种 Bean,并调用它们的生命周期方法。 -
BeanFactory
容器本身是一个接口,有多个实现类。
常见的BeanFactory
实现类:
org.springframework.beans.factory.XmlBeanFactory
通过XmlBeanFactory类的构造函数传递Resource进而使用BeanFactory
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
ApplicationContext容器
特点:
-
继承了
BeanFactory
接口,由org.springframework.context.ApplicationContext
接口定义 -
启动容器时加载
ApplicationContext
接口的两个实现类:
-
ClassPathXmlApplicationContext
-
FileSystemXmlApplicationContext
ClassPathXmlApplicationContext
该类作用:
-
从类路径中寻找指定的
XML
配置文件,完成ApplicationContext
的实例化工作
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
/*形参是指定的Spring配置文件的名称和位置*/
FileSystemXmlApplicationContext
该类作用:
-
从指定的文件系统路径中寻找指定的
XML
配置文件,并完成ApplicationContext
的实例化
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
与ClassPathXmlApplicationContext
的区别:
-
FlieSystemXmlApplicationContext
不会从类路径中读取Spring
的配置文件。而是通过参数指定配置文件的位置--->该实现类可以获取类路径之外的资源 -
Java
项目中多采用ClassPathXmlApplicationContext
类实例化ApplicationContext
容器 -
Web
项目中ApplicationContext
容器实例化工作会由Web
服务器完成,使用基于ContextLoaderListener
的方式,在Web.xml
中添加
<!--指定Spring配置文件的位置,有多个配置文件时,以逗号分隔-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--spring将加载resources目录下的applicationContext.xml文件-->
<param-value>
classpath:resources/applicationContext.xml
</param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动Spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
注意:
-
BeanFactory
和ApplicationContext
都是通过XML
配置文件加载Bean
的
二者区别:
BeanFactory
:
-
如果
Bean
的某一个属性没有注入,使用BeanFacotry
加载后,第一次调用getBean()
方法时会抛出异常
ApplicationContext
:
-
如果
Bean
的某一个属性没有注入,初始化的时候会自检
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人