11.15 Spring Ioc容器

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>

注意:

  • BeanFactoryApplicationContext都是通过XML配置文件加载Bean

二者区别:

BeanFactory

  • 如果Bean的某一个属性没有注入,使用BeanFacotry加载后,第一次调用getBean()方法时会抛出异常

ApplicationContext

  • 如果Bean的某一个属性没有注入,初始化的时候会自检

实际开发过程中常使用ApplicationContext

posted @   俊king  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示