Spring IoC容器

Java-框架王 Spring 发布时间:2021-07-15 16:27:59 阅读数:2014 1

一、Ioc简介


IoC容器是Spring中的核心
我们通常也将其称之为Spring容器
Spring使用IoC容器对对象的实例化和初始化的操作,及管理对象的创建到销毁的生命周期
Spring中使用的对象全部由IoC容器进行管理,所以在借助Spring开发时,我们无需使用new关键字创建对象

我们将IoC容器管理的对象称为Spring Bean
Spring Bean就是 Java 对象,它同new关键字创建的对象相同
在Spring中我们可以通过XML或Java注解两种方式创建生成Java Bean
 

二、IoC容器的类型


Spring中提供2种不同类型的IoC容器,即BeanFactory和ApplicationContext容器
1. BeanFactory 容器
BeanFactory是最简单的容器,由org.springframework.beans.factory.BeanFactory接口定义,采用懒加载(lazy-load)-使用时即时加载,所以容器启动比较快。
 BeanFactory只对外提供容器最基本的操作功能
其功能:为兼容Spring集成的第三方框架(如 BeanFactoryAware、InitializingBean、DisposableBean) 

BeanFactory:是一个管理Bean 的工厂,它主要负责初始化各种 Bean,并调用它们的生命周期方法。
BeanFactory 接口有多个实现类,
   如:org.springframework.beans.factory.xml.XmlBeanFactory
   使用 BeanFactory 需要创建 XmlBeanFactory 类的实例,
   通过 XmlBeanFactory 类的构造函数来传递 Resource 对象

Resource resource = new ClassPathResource("applicationContext.xml"); 
BeanFactory factory = new XmlBeanFactory(resource);  
2. ApplicationContext 容器
ApplicationContext 继承了 BeanFactory 接口,
由 org.springframework.context.ApplicationContext 接口定义,对象在启动容器时加载

ApplicationContext 在 BeanFactory 的基础上增加了很多企业级功能,如 AOP、国际化、事件支持等

ApplicationContext 接口有两个常用的实现类,具体如下。
1)ClassPathXmlApplicationContext
该类从类路径 ClassPath 中寻找指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作,具体如下所示。
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
在上述代码中,configLocation 参数用于指定 Spring 配置文件的名称和位置,如 Beans.xml。
2)FileSystemXmlApplicationContext
该类从指定的文件系统路径中寻找指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作,具体如下所示。
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
它与 ClassPathXmlApplicationContext 的区别是:
在读取 Spring 的配置文件时,
FileSystemXmlApplicationContext 不会从类路径中读取配置文件,而是通过参数指定配置文件的位置。
即 FileSystemXmlApplicationContext 可以获取类路径之外的资源,如“D:/test/Beans.xml”。

通常在 Java 项目中,会采用 ClassPathXmlApplicationContext 类实例化 ApplicationContext 容器的方式,
而在 Web 项目中,ApplicationContext 容器的实例化工作会交由 Web 服务器完成。
Web 服务器实例化 ApplicationContext 容器通常使用基于 ContextLoaderlistener 实现的方式,
它只需要在 web.xml 中添加如下代码:
 <!--指定Spring配置文件的位置,有多个配置文件时,以逗号分隔-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <!--spring将加载spring目录下的applicationContext.xml文件-->
    <param-value>
        classpath:spring/applicationContext.xml
    </param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动Spring容器-->
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

注意事项:
  BeanFactory及ApplicationContext 都可采用XML配置文件的方式加载Bean
二者的区别:
    当Bean中某一个属性没有注入,使用 BeanFacotry 加载后,第一次调用 getBean() 方法时会抛出异常
   而 ApplicationContext 则会在初始化时自检,这样有利于检查所依赖的属性是否注入

在日常的开发中,我们经常使用ApplicationContext
在一些特殊的情况下,如:系统资源较少时,才会使用 BeanFactory 

 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202107/501.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者