聊聊Spring Boot的自动配置

这篇具有很好参考价值的文章主要介绍了聊聊Spring Boot的自动配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


聊聊Spring Boot的自动配置,SpringBoot,spring boot,后端,java

介绍

Spring Boot的自动配置是其一大核心特性,可以让我们迅速构建出一个Spring应用程序。

Spring Boot 是 Spring Framework 中最火的项目之一,它通过集成各种第三方库和框架来简化开发过程,并提供一些优秀的默认设置,使得开发人员可以快速构建高效的企业级应用。本文将主要讲述 Spring Boot 自动配置的核心原理和实现细节,帮助读者更好地理解和应用这一功能。


特点

  1. 根据classpath中的Jar包依赖,自动配置Spring的基础配置项。如根据spring-data-jpa在classpath中自动配置Spring Data JPA。
  2. 提供了一系列的开箱即用的自动配置实现,解决了配置文件配置大量Bean的问题。这些自动配置实现都在spring-boot-autoconfigure包中。
  3. 自动配置会根据用户定义的Bean决定是否启用,可以进行自定义和重写。通过@Conditional注解实现条件化配置。
  4. 提供了众多开箱即用的启动器依赖,进一步简化了依赖管理,如spring-boot-starter-web等。
  5. 自动配置只会加载实际用到的配置项,通过@ConditionalOnClass、@ConditionalOnMissingBean等条件化配置来实现。
  6. 提供了准生产的外置配置文件支持,如application.properties。
  7. 可以通过@EnableAutoConfiguration控制自动配置的开关。

核心原理

  1. 使用@EnableAutoConfiguration注解开启自动配置。这个注解是Spring Boot实现自动配置的核心,其本质上是一个组合注解,包含了多个其他注解,如@Configuration, @ConditionalOnClass等。
  2. Spring Boot对jar包下的spring.factories文件进行扫描。这个文件中列出了所有可用的自动配置类,这些类都是以org.springframework.boot.autoconfigure.EnableAutoConfiguration为参数,通过loadFactoryNames()方法加载的。
  3. 根据特定的条件和规则,Spring Boot会注册不同的Bean到Spring容器中,从而启动不同的功能特性。这些条件和规则是通过@Conditional注解来实现的。
  4. 当Spring Boot应用启动时,它会根据classpath中的jar包和类路径下的配置来启用相应的自动配置。例如,如果classpath中有H2数据库,那么Spring Boot将自动配置H2数据库。

实现

聊聊Spring Boot的自动配置,SpringBoot,spring boot,后端,java

1.@SpringBootApplication

这个注解包含了@EnableAutoConfiguration,它用来开启Spring Boot的自动配置功能。

@EnableAutoConfiguration 会利用AutoConfigurationImportSelector给容器导入一些自动配置类。

三个注解
@Configuration

表示该类是一个配置类,用于定义Bean。

@EnableAutoConfiguration

表示启用自动配置功能,根据classpath中的jar包和类路径下的配置来启用相应的自动配置。

@ComponentScan

表示扫描指定包及其子包下的所有组件(如Controller、Service、Repository等),并将它们注册到Spring容器中。

示例
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = {"com.example.demo"})
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

2. SpringFactoriesLoader

SpringFactoriesLoader是Spring框架中的一个类,用于加载和实例化实现了特定接口的bean。它通过查找classpath下的所有META-INF/spring.factories文件来实现自动配置。这些文件中列出了需要自动配置的bean的类型和实现类。

例如,如果你有一个名为MyService的接口和一个实现了该接口的MyServiceImpl类,你可以在项目的resources目录下创建一个名为META-INF/spring.factories的文件,内容如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.MyServiceImpl

这样,当Spring启动时,它会扫描到这个文件,并使用MyServiceImpl类来实例化MyService接口的bean。

3.@Conditional

@Conditional注解是Spring Boot中的一个注解,用于实现条件性的自动配置。它可以根据特定的条件来决定是否启用某个bean的自动配置。

例如,假设你有一个名为MyService的接口和一个实现了该接口的MyServiceImpl类,你可以使用@Conditional注解来根据特定的条件来决定是否启用MyServiceImpl类的自动配置。

首先,在MyServiceImpl类上添加@Conditional注解,并指定一个条件表达式:

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;

@Service
@ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true")
public class MyServiceImpl implements MyService {
    // ...
}

只有当配置文件中存在名为"myapp.feature.enabled"的属性,并且其值为"true"时,才会启用MyServiceImpl类的自动配置。

还可以使用其他类型的条件表达式,如@ConditionalOnMissingBean、@ConditionalOnClass等。具体可以参考Spring Boot官方文档中的说明。


总结

自动配置是 Spring Boot 中一个非常重要和强大的特性,它可以极大地减少开发时间和精力消耗,并提供良好的代码结构和可维护性。随着技术和需求的不断变化,Spring Boot 团队不断增加新的自动配置类和属性,允许开发人员更轻松地使用和管理外部依赖项和环境变量。希望本文能够帮助你更好地理解和利用 Spring Boot 自动配置的功能和优势,并鼓励你持久地学习和探索这一令人兴奋的技术堆栈!


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,系统架构, 分布式, java, GO, python, 游戏相关 等系列文章,一系列干货随时送达!

聊聊Spring Boot的自动配置,SpringBoot,spring boot,后端,java文章来源地址https://www.toymoban.com/news/detail-690791.html

到了这里,关于聊聊Spring Boot的自动配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 自动配置原理

    一、概述 相比较于Spring 繁杂的xml配置,Spring Boot 的自动配置极大的简化了开发 二、自动配置过程 1、引入场景启动器starter 2、SPI思想,自动扫描和加载META-INF下面的配置类 3、 配置类 通过@Bean配置组件 4、配置类通过@EnableConfigurationProperties将配置类与属性类绑定 5、 属性类

    2024年03月14日
    浏览(38)
  • Spring Boot自动配置原理

    springboot是基于spring的新型的轻量级框架,最厉害的地方当属**自动配置。**那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置 从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringApplication.run)最为耀眼,所以要揭开SpringBoot的神秘面纱

    2024年01月19日
    浏览(27)
  • SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接

    系列文章: SpringBoot + Vue前后端分离项目实战 || 一:Vue前端设计 SpringBoot + Vue前后端分离项目实战 || 二:Spring Boot后端与数据库连接 SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接 SpringBoot + Vue前后端分离项目实战 || 四:用户管理功能实现 SpringBoot + Vue前后

    2024年02月11日
    浏览(49)
  • 45、Spring Boot自动配置原理

    @lmport + @Configuration + Spring spi 自动配置类由各个starter提供,使用@Configuration + @Bean定义配置类,放到META-INF/spring.factories下 使用Spring spi扫描META-INF/spring.factories下的配置类 使用@lmport导入自动配置类

    2024年02月16日
    浏览(28)
  • Spring Boot的自动配置原理

    Spring Boot的自动配置是Spring框架的一个重要特性,它旨在简化应用程序的开发和部署过程。自动配置通过基于类路径中的依赖关系和配置文件内容来预先配置Spring应用程序的各种组件和功能。这样,我们可以在无需显式配置大量参数的情况下,快速搭建一个运行良好的Spring应

    2024年02月14日
    浏览(26)
  • Spring Boot 自动配置功能介绍

    Spring Boot 是一个流行的 Java 开发框架,它提供了许多便利的功能和工具,帮助开发者快速构建应用程序。其中一个最引人注目的特性是其强大的自动配置功能。 在传统的 Java 开发中,我们通常需要手动配置应用程序的各个组件和依赖项。这可能涉及到编写大量的配置代码,导

    2024年02月03日
    浏览(49)
  • SpringBoot整理-Spring Boot配置

    Spring Boot 的配置系统是其核心功能之一,旨在简化 Spring 应用的配置过程。Spring Boot 提供了一种灵活的方式来配置你的应用,无论是通过外部配置文件,环境变量,命令行参数还是在代码中直接配置。以下是关于 Spring Boot 配置的几个重要方面: 配置文件 application.prop

    2024年01月25日
    浏览(36)
  • Spring Boot中的Elasticsearch自动配置

    Elasticsearch是一个基于Lucene的分布式全文搜索引擎,它在搜索、分析等方面具有出色的表现。Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式,使我们可以在Spring Boot应用程序中轻松地使用Elasticsearch。 本文将介绍Spring Boot中的Elasticsearch自动配置的作

    2024年02月12日
    浏览(28)
  • Spring Boot 自动配置一篇概览

    自动配置类通过添加 @AutoConfiguration 注解实现。 因为 @AutoConfiguration 注解本身是以 @Configuration 注解的,所以自动配置类可以算是一个标准的基于 @Configuration 注解的类。 @Conditional 注解可以用于声明自动配置启用条件,通常,我们可以使用 @ConditionalOnClass、@ConditionalOnMissingBean

    2024年02月06日
    浏览(30)
  • Spring Boot 中的自动配置(autoconfigure)

    文中部分图片来源为 动力节点-王鹤老师的Spring Boot3.0 视频讲解中。 自动配置:从类路径中,搜索相关的 jar,根据 jar 的内容,尝试创建所需的对象。例如,如果有 MyBatis .jar,Spring Boot 会尝试创建 DataSource(根据配置文件中的url,username,password)连接数据库。还需要创建 S

    2024年01月25日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包