前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring Boot 自动配置

Spring Boot 自动配置

作者头像
赵哥窟
发布于 2018-12-27 08:10:08
发布于 2018-12-27 08:10:08
91600
代码可运行
举报
文章被收录于专栏:日常技术分享日常技术分享
运行总次数:0
代码可运行

Spring Boot 启动方法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootApplication
public class ActuatorApplication {

    public static void main(String[] args) {
        SpringApplication.run(ActuatorApplication.class, args);
    }

}
@SpringBootApplication 其实包含3个注解

○@SpringBootConfiguration:标记当前类为配置类 ○@EnableAutoConfiguration:开启自动配置 ○@ComponentScan:扫描主类所在的同级包以及下级包里的Bean

关键是@EnableAutoConfiguration 我们来看看@EnableAutoConfiguration的源代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
    Class<?>[] exclude() default {};
    String[] excludeName() default {};
}

关键是@Import(AutoConfigurationImportSelector.class)导入的配置功能, AutoConfigurationImportSelector中的方法getCandidateConfigurations,得到待配置的class的类名集合

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Return the auto-configuration class names that should be considered. By default
 * this method will load candidates using {@link SpringFactoriesLoader} with
 * {@link #getSpringFactoriesLoaderFactoryClass()}.
 * @param metadata the source metadata
 * @param attributes the {@link #getAttributes(AnnotationMetadata) annotation
 * attributes}
 * @return a list of candidate configurations
 */
    protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,
            AnnotationAttributes attributes) {
        List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
                getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
        Assert.notEmpty(configurations,
                "No auto configuration classes found in META-INF/spring.factories. If you "
                        + "are using a custom packaging, make sure that file is correct.");
        return configurations;
}

下一步通过SpringFactoriesLoader.loadFactoryNames() 扫描所有 jar 包类路径下的META-INF/spring.factories,将扫描到的文件内容包装成properties对象,从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加到容器中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.12.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spring boot自动配置原理
想使用自动配置,需要在启动类上添加EnableAutoConfiguration注解,但是一般我们都会在启动类上添加springbootapplication注解,他就包含了自动配置的注解,
earthchen
2020/09/24
7100
Spring Boot - 自动配置实现原理
Spring Boot 中的配置体系是一套强大而复杂的体系,其中最基础、最核心的要数自动配置(AutoConfiguration)机制了。
小小工匠
2021/08/17
4270
Spring Boot - 自动配置实现原理
SpringBoot运作原理解析之加载AutoConfiguration
本篇文章带大家了解一下SpringBoot的运作原理之自动配置加载。在此之前可先学习《SpringBoot运行源代码分析》,了解SpringBoot启动的基本流程和涉及到的一些配置文件。
程序新视界
2019/05/26
4870
从源码看Spring Boot 2.0.1
Spring Boot 命名配置很少,却可以做到和其他配置复杂的框架相同的功能工作,从源码来看是怎么做到的。
二十三年蝉
2018/12/19
6180
神秘又强大的@SpringBootApplication注解
大部分的配置都可以用Java类+注解来代替,而在SpringBoot项目中见的最多的莫过于@SpringBootApplication注解了,它在每个SpringBoot的启动类上都有标注。
2020labs小助手
2021/04/14
8940
为什么我要写spring.factories文件?
在阅读spring-boot相关源码时,常常见到spring.factories文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:“明明自动配置的类已经打上了@Configuration的注解,为什么还要写spring.factories文件?”
HUC思梦
2020/09/03
3.1K0
第05天 SpringBoot自动配置原理
自从有了 SpringBoot 之后,咋们就起飞了!各种零配置开箱即用,而我们之所以开发起来能够这么爽,自动配置的功劳少不了,今天我们就一起来讨论一下 SpringBoot 自动配置原理。
程序员Leo
2023/08/16
4840
第05天 SpringBoot自动配置原理
【Spring Boot 源码学习】自动装配流程源码解析(上)
上篇博文,笔者带大家从整体上了解了AutoConfigurationImportSelector 自动装配逻辑的核心功能及流程,由于篇幅有限,更加细化的功能及流程详解还没有介绍。本篇开始将从其源码入手,重点解析细化后的自动装配流程源码。
huazie
2024/05/04
1660
【Spring Boot 源码学习】自动装配流程源码解析(上)
Springboot 系列(三)Spring Boot 自动配置
关于配置文件可以配置的内容,在 Spring Boot 官方网站已经提供了完整了配置示例和解释。
未读代码
2019/11/04
5180
Springboot 系列(三)Spring Boot 自动配置
【原创】Spring Boot终极篇《上》
目前Spring Boot有多火,相信大家都能感受到,SpringBoot仿佛现在成为一个java开发中必备的技能之一。另外一方面,其实真正只有使用过的人才知道Spring Boot的爽快,那是一种享受。但是想做一个合格的、有优秀的java开发者,Spring Boot其背后的相关原理也是不得不掌握的。所以这一篇中我们来说Spring Boot的配置。
田维常
2020/09/22
4700
【原创】Spring Boot终极篇《上》
用了那么久的springboot,你知道它的自动装配原理吗?
在使用springboot时,很多配置我们都没有做,都是springboot在帮我们完成,这很大一部分归功于springboot自动装配,那springboot的自动装配的原理是怎么实现的呢?
索码理
2022/09/20
3980
用了那么久的springboot,你知道它的自动装配原理吗?
今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
前言什么的,就不说了,大家都会用的,我们直接从 SpringBoot 启动类说起。
宁在春
2022/10/31
4930
今天,我们来详细的聊一聊SpringBoot自动配置原理,学了这么久,你学废了吗?
源码学习系列之SpringBoot自动配置(篇一)
ok,本博客尝试跟一下Springboot的自动配置源码,做一下笔记记录,自动配置是Springboot的一个很关键的特性,也容易被忽略的属性,因为这个属性被包括在@SpringBootApplication注解里,所以不去跟一下源码都不知道还有这个属性,ps:本博客源码基于SpringBoot1.5.7版本
SmileNicky
2019/11/04
4710
springboot的自动配置原理
springboot的出现大大简化了开发的过程,让开发任能够更加专注于业务的开发,对于其自动配置的原理有必要进行一个梳理学习
在水一方
2022/06/14
2160
springboot的自动配置原理
Spring Boot 的自动配置,是如何实现的?
链接 | juejin.im/post/5b679fbc5188251aad213110
用户1516716
2019/12/24
6640
Spring Boot 2.0 自动配置原理浅析
比如常见的,将属性外化配置在 application.properties 应用配置文件,然后在工程中获取该属性值。Spring Boot 可以将配置外部化,这种模式叫做 “外化配置”。将配置从代码中分离外置,最明显的作用是只要简单地修改下外化配置文件,就可以在不同环境中,可以运行相同的应用代码。具体见《Spring Boot 配置文件 – 在坑中实践》: http://www.spring4all.com/article/267
二哥聊运营工具
2021/12/17
2690
Spring Boot 2.0 自动配置原理浅析
SpringBoot-自动配置-原理解析
​ SpringBoot的主旨是约定大于配置,开发项目初期阶段,我们不需要做过多的配置,SpirngBoot已经帮我们自动配置好了大部分的内容,比如仲裁依赖机制,自动引入需要的依赖,自动配置等内容。让我们能够将更多的精力放在业务逻辑上,那么,它是如何实现自动配置的呢?
程序员阿杜
2021/07/28
3280
springboot启动原理 通俗面试_spring高级面试题
代码中使用@EnableAutoConfiguration以及@ComponentScan自动装配
全栈程序员站长
2022/09/24
2650
springboot启动原理 通俗面试_spring高级面试题
SpringBoot自动装配探索
SpringBoot自动装配探索 首先看SpringBoot的启动类 @SpringBootApplication public class Application { public static void main(String[] args) { // Customize the spring config location System.setProperty("spring.config.additional-location", "
晓果冻
2022/09/08
3200
SpringBoot自动装配探索
Java - 自动配置
自动配置 pom.xml spring-boot-dependencies :核心依赖在父工程中 我们在写或者引入一些Spring Boot依赖的时候,不需要指定版本,就因为有这些版本仓库 启动器 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> 启动器:SpringBoot的启动场景 比如我们要引入web,直
kenvie
2022/01/20
5140
Java - 自动配置
相关推荐
spring boot自动配置原理
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文