SpringBoot自动装配原理

SpringBoot自动装配原理

1.Starter(依赖)

Spring Boot Starter 是 Spring Boot 提供的一种依赖管理机制,它可以帮助开发者快速集成常用的技术栈和第三方库,简化项目的配置和搭建过程,提高开发效率。Spring Boot Starter 通常包含以下两个模块:

  1. Starter 模块:这是一个空的 Maven 依赖项目,用于定义 Spring Boot Starter 的名称、版本和描述等信息,以及声明 Spring Boot 的自动配置模块作为依赖。
  2. Autoconfigure 模块:这是 Spring Boot 的自动配置模块,用于根据应用程序的依赖关系和配置情况,自动配置和装配 Spring Bean。在这个模块中,通常会定义一个带有 @Configuration@ConditionalOnXXX 注解的配置类,用于装配相关的 Bean,例如 DataSourceAutoConfigurationWebMvcAutoConfiguration 等。

通过引入 Spring Boot Starter,开发者可以省去手动配置和装配各种技术栈的繁琐过程,Spring Boot 会根据应用程序的依赖关系和配置情况,自动加载相应的 Starter,并根据 Starter 中的自动配置模块自动配置和装配相关的 Bean。例如,如果在一个 Web 应用中需要使用 Thymeleaf 模板引擎,只需在 Maven 中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Spring Boot 就会自动加载 spring-boot-starter-thymeleaf Starter,并根据 Starter 中的自动配置模块自动配置和装配 Thymeleaf 相关的 Bean,开发者只需要简单地在配置文件中配置相关的参数即可。

2.自动装配原理

Spring Boot 的自动装配(Auto Configuration)是基于 Spring 的条件化配置(Conditional Configuration)机制实现的。当应用程序启动时,Spring Boot 会根据应用程序的依赖关系和配置情况,自动配置和装配 Spring Bean,这些 Bean 可以是应用程序所需的任何组件,例如数据库连接池、消息队列、Web 容器、模板引擎等。

具体来说,Spring Boot 的自动装配是通过以下步骤实现的:

  1. Spring Boot 根据应用程序的依赖关系,查找并加载所有的 Starter,每个 Starter 都包含一个或多个自动配置类(Auto Configuration)。

  2. Spring Boot 根据 Starter 中的自动配置类,自动装配和配置 Spring Bean,这些 Bean 都是基于 Spring 的条件化配置机制实现的。在自动配置类中,通常会使用 @ConditionalOnXXX 注解指定一个或多个条件,只有当满足这些条件时,自动配置类才会被加载和执行。

    //必须加载了含有这个类的starter依赖,这个自动配置才能生效
    @ConditionalOnClass({CharacterEncodingFilter.class})
    
    @ConditionalOnProperty(
        prefix = "server.servlet.encoding",
        value = {"enabled"},
        matchIfMissing = true
    )
    public class HttpEncodingAutoConfiguration{......}
    
  3. 如果应用程序需要自定义某个组件的配置,可以在应用程序中添加一个对应的 Bean,这个 Bean 的优先级会高于自动配置类中的 Bean,从而覆盖自动配置类中的默认配置。

  4. Spring Boot 还提供了一些可配置的属性(Properties),用于控制自动装配的行为。应用程序可以在配置文件中设置这些属性,来定制自己的配置需求。例如,spring.datasource.url 属性用于设置数据源的连接 URL。

总之,Spring Boot 的自动装配是基于条件化配置机制实现的,根据你引入的依赖和配置文件中的配置信息等条件去加载配置类,自动加载Bean。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值