【Spring】03 容器

文章目录

      • 1. 定义
      • 2. BeanFactory
        • 1)惰性加载
        • 2)基本的容器功能
        • 3)XML配置
      • 3. ApplicationContext
        • 1)主动加载
        • 2)AOP支持
        • 3)事件发布与监听
        • 4)国际化支持
        • 5)注解支持
      • 4. Spring容器的生命周期
        • 1)启动阶段
        • 2)运行阶段
        • 3)关闭阶段
      • 5. Spring容器的工作原理
        • 1)定位配置文件
        • 2)加载配置文件
        • 3)实例化Bean
        • 4)注入依赖
        • 5)初始化Bean
        • 6)提供服务
        • 7)销毁Bean
      • 结语

1. 定义

Spring 容器是 Spring 框架的核心组件之一,负责管理和维护应用中的所有Bean。

它通过依赖注入的方式,将 Bean 之间的依赖关系交给容器管理,实现了控制反转(IoC)的设计原则。Spring容器主要有两种类型:BeanFactoryApplicationContext

2. BeanFactory

BeanFactory 是 Spring 框架最基本的容器接口,提供了基本的容器功能。

【Spring】03 容器_第1张图片

它的主要特性包括:

1)惰性加载

BeanFactory 采用惰性加载的方式,即在需要使用 Bean 时才进行加载。这样可以降低系统的启动时间和资源消耗,适用于较大规模的应用。

2)基本的容器功能

BeanFactory 提供了最基本的容器功能,包括 Bean 的实例化、配置、管理和生命周期的控制。它是其他容器类型的基础。

3)XML配置

BeanFactory 通常通过 XML 配置文件来定义和配置 Bean。配置文件中描述了Bean的类型、属性和依赖关系等信息。

<bean id="userService" class="org.example.cheney.UserService">
    <property name="userDao" ref="userDao"/>
</bean>

3. ApplicationContext

ApplicationContext 是对 BeanFactory 的扩展,提供了更多的企业级特性。它是Spring应用中更常用的容器类型,组合了一堆功能接口。

【Spring】03 容器_第2张图片

它具有以下优点:

1)主动加载

ApplicationContext 采用主动加载的方式,即在应用启动时就将所有的 Bean 加载到容器中。这样可以更早地发现潜在的配置问题,提高系统的稳定性。

2)AOP支持

ApplicationContext 支持面向切面编程(AOP),可以通过配置实现横切关注点的功能,例如日志记录、事务管理等。

3)事件发布与监听

ApplicationContext 允许 Bean 之间通过事件进行通信。一个 Bean 可以发布事件,而其他 Bean 可以注册监听器以响应这些事件。

4)国际化支持

ApplicationContext 提供了对国际化的支持,可以轻松地实现多语言应用程序。

5)注解支持

ApplicationContext 支持通过注解进行 Bean 的定义和注入,使得配置更加简洁和可读。

@Configuration
public class AppConfig {
    @Bean
    public UserService userService() {
        return new UserService();
    }
}

4. Spring容器的生命周期

Spring 容器的生命周期包括启动、运行和关闭三个阶段。

【Spring】03 容器_第3张图片

1)启动阶段

在启动阶段,Spring 容器会读取配置文件,实例化并初始化所有配置的 Bean。这包括 Bean 的实例化、属性注入、初始化方法的调用等过程。

2)运行阶段

在运行阶段,Spring 容器接受外部的请求,提供 Bean 的服务。当应用需要某个 Bean 时,容器会负责将该 Bean注入到需要的地方,满足应用的依赖关系。

3)关闭阶段

在关闭阶段,Spring 容器执行一些清理工作,确保应用的正常关闭。这包括调用所有 Bean 的销毁方法、释放资源等。

5. Spring容器的工作原理

Spring 容器的工作原理可以总结为以下几个步骤:

1)定位配置文件

容器首先需要找到应用的配置文件,该文件通常是一个 XML 文件,其中包含了 Bean 的定义和配置信息。

2)加载配置文件

一旦找到配置文件,容器会负责将配置文件加载到内存中,解析其中的 Bean 定义和相关配置。

3)实例化Bean

容器根据配置文件中的定义,实例化 Bean 对象。这包括调用构造函数、设置属性值等步骤。

4)注入依赖

容器通过依赖注入的方式,将 Bean 之间的依赖关系注入到各个 Bean 中。这可以通过构造函数注入、Setter 方法注入、接口注入等方式实现。

5)初始化Bean

一旦依赖关系注入完成,容器会调用 Bean 的初始化方法。这可以通过配置文件中的 init-method 属性、@PostConstruct 注解等方式指定。

6)提供服务

在 Bean 初始化完成后,容器就开始提供服务。应用程序可以通过容器获取需要的 Bean,实现业务逻辑。

7)销毁Bean

当应用程序关闭时,容器会执行一些清理工作,包括调用所有 Bean 的销毁方法、释放资源等。

结语

Spring 容器作为 Spring 框架的核心,承担了管理应用中所有组件的重要责任。通过依赖注入和控制反转等特性,Spring 容器实现了松散耦合、可维护、可测试的设计原则。深入了解 Spring 容器的工作原理和使用方法,对于提高应用程序的质量和开发效率具有重要意义。

你可能感兴趣的:(Spring,spring,java,开发语言)