【Spring】03 容器

发布时间:2023年12月18日

1. 定义

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

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

2. BeanFactory

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

在这里插入图片描述

它的主要特性包括:

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应用中更常用的容器类型,组合了一堆功能接口。

在这里插入图片描述

它具有以下优点:

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 容器的生命周期包括启动、运行和关闭三个阶段。

在这里插入图片描述

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 容器的工作原理和使用方法,对于提高应用程序的质量和开发效率具有重要意义。

文章来源:https://blog.csdn.net/yanyc0411/article/details/135005093
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。