SpringBoot的自动配置

SpringBoot的自动配置

一、前言

自动配置(Auto-configuration)是指在应用程序启动时,根据一些默认规则和条件,自动配置应用程序的各种组件和功能。自动配置的目的是简化应用程序的配置过程,减少手动配置的工作量。自动配置可以根据应用程序所使用的框架、库或环境条件,自动配置相应的功能和组件。例如,在Spring Boot框架中,它提供了许多自动配置类,根据应用程序的依赖和配置情况,自动配置数据库连接池、Web服务器、日志记录等常见组件,使开发人员可以快速启动应用程序而无需手动配置这些组件。

二、与自动装配的区别

  • 自动装配(autowiring)和自动配置(auto-configuration)是两个在软件开发中经常使用的概念,它们在不同的层面上有所区别。
  • 自动装配(Autowiring)是指在依赖注入(Dependency Injection)的过程中,根据一定的规则自动地将依赖注入到相应的组件中,而无需手动显式地指定依赖关系。自动装配的目的是减少开发人员的工作量,提高开发效率。它可以根据一些规则(如类型匹配、名称匹配等)自动找到需要注入的依赖,然后将其注入到相应的类或组件中。在Spring框架中,自动装配是通过使用 @Autowired 注解或其他装配注解来实现的。
  • 简而言之,自动装配关注的是依赖注入过程中的自动化,它处理类与类之间的依赖关系;而自动配置关注的是应用程序整体的自动化配置,它负责配置和初始化应用程序的各个组件和功能。

三、原理

Spring Boot自动配置的核心注解是 @SpringBootApplication ,是Spring Boot的启动类注解,该注解是一个复合注解。
在这里插入图片描述
Spring Boot的自动配置是通过条件化配置(Conditional Configuration)实现的。它基于条件判断来确定是否需要自动配置某个组件或功能,只有当满足特定条件时才会生效。下面是自动配置的一般原理:

  1. Starter依赖
    Spring Boot中的各个模块通常使用Starter依赖作为入口点。Starter依赖是一组预定义的依赖项集合,它们引入了所需的库和依赖,以及必要的自动配置类。

    如何理解Starter?

    starter就是定义了一个starter的Jar包,在这个Jar包中写入被@Configuration注解标注的配置类,配置类中定义了需要的Bean。然后在starter的META-INF/spring.factories文件中以key-value的形式写入这些配置类,其中有一个key=EnableAutoConfiguration,它对应的value值就是一个个以AutoConfiguration结尾命名的×××AutoConfiguration自动配置类。然后Spring Boot即可按照约定去加载配置类。

    # Auto Configure
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
    org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
    org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
    org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
    org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
    org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
    
  2. 条件注解
    Spring Boot使用条件注解(Conditional Annotation)来标记自动配置类。这些条件注解基于某些条件判断是否要应用自动配置。例如,@ConditionalOnClass 表示只有在类路径中存在指定的类时,自动配置才会生效。
  3. 自动配置类
    自动配置类是实现自动配置的核心。它们通常使用@Configuration注解进行标记,并且包含了一系列的@Bean方法,用于配置和初始化相应的组件。这些自动配置类会根据条件注解的判断,决定是否进行配置。
  4. 自动配置启动
    当应用程序启动时,Spring Boot会自动扫描类路径上的自动配置类。根据条件注解的判断,Spring Boot会选择适合的自动配置类,并将其应用到应用程序中。

通过上述步骤,Spring Boot能够根据应用程序的依赖和环境条件,自动配置相应的组件和功能。这样,开发人员可以快速启动应用程序,并根据需要进行自定义配置,而无需手动配置每个组件。需要注意的是,自动配置并不是强制的,开发人员可以通过显式地配置来覆盖自动配置的行为。同时,Spring Boot还提供了属性配置(Properties Configuration)的机制,使开发人员可以通过配置文件或命令行参数来影响自动配置的行为。

四、总结

所以spring boot在整个的启动过程中,其实就是在类路径的META-INF/spring.factories文件中找到EnableAutoConfiguration对应的所有的自动配置类,然后将所有自动配置类加载到spring容器中。所有自动配置类都是以AutoConfiguration结尾来命名的,而诸多的xxxAutoConfiguration其实就是Spring容器的JavaConfig形式,它的作用就是为Spring容器导入bean。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值