SpringBoot自动配置的原理
Spring Boot的运行是由注解@EnableAutoConfiguration提供的
它的关键功能是@Import注解。
EnableAutoConfigurationImportSelector 使用 SpringFactoriesLoader.loadFactoryNames 方法来扫描具有MEAT-INF/spring.factories文件的jar包
在了解原理前我们需要先认识下面几个注解:
@ConditionalOnBean:当容器里有指定的Bean为true
@ConditionalOnClass:当类路径下有指定的类为true
@ConditionalOnMissingBean:当容器里没有指定的Bean为true
@ConditionalOnProperty:指定的数据是否有指定的值
认识完注解后我们可以按照下面流程去理解Spring Boot的自动配置原理
1、自定义Starter(在自定义Starter之前先要在Maven中填写依赖)
2、完成一个test类,类中定义默认的属性值,如该类中,只有一个属性值age,默认为18。@ConfigurationProperties注解会定义一个匹配,如果想修改属性值,可以在application.properties中使用“匹配.属性=修改的值”进行修改
3、完成一个service服务类。即主要的功能类,如果没有SpringBoot,这些服务类在Spring中都是需要自己去配置生成的。
如SpringMVC中的DispatcherServlet、Mybatis的DataSource等
4、完成一个自动配置类。自动配置类主要作用是SpringBoot的配置核心,它会写在MEAT-INF/spring.factories中,告知SpringBoot在启动时去读取该类并根据该类的规则进行配置。
@EnableConfigurationProperties注解根据TestProperties类开启属性注入,允许在application.properties修改里面的属性值。
@ConditionOnClass会检测是否存在TestService类
@ConditionOnProperty类会查看是否开启该自动配置。默认开启(true)。
@ConditionOnMissingBean会检测容器中是否有TestService类的对象,如果没有则生成一个
5、最后一步,不要忘记在在MEAT-INF文件夹中创建spring.factories文件。内容很简单,告诉SpringBoot去读取TestServiceAutoConfiguration类 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\cn.TestServiceAutoConfiguration
更多技术资讯可关注:itheimaGZ获取
SpringBoot自动配置的原理的更多相关文章
- 聊一聊 SpringBoot 自动配置的原理
解析思路 我们建立好一个SpringBoot的工程后,我们将从启动类,SpringBootApplication开始进行探究. 开始解析 首先我们建立一个 Springboot的工程.找到启动类,我们 ...
- SpringBoot自动配置注解原理解析
1. SpringBoot启动主程序类: @SpringBootApplication public class DemoApplication { public static void main(S ...
- SpringBoot自动配置的魔法
Spring自动配置 从@SpringBootApplication注解说起 SpringBoot会根据类路径下的类自动配置,省去了编写繁琐的xml配置文件.原本基于xml配置bean的方式编程基于J ...
- SpringBoot学习(六)-->SpringBoot的自动配置的原理
Spring Boot的自动配置的原理 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入 ...
- SpringBoot实战之SpringBoot自动配置原理
SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties 或者 @Confi ...
- springBoot 自动配置原理
在之前文章中说过,springBoot会根据jar包去添加许多的自动配置,本文就来说说为什么会自动配置,自动配置的原理时什么? springBoot在运行SpringApplication对象实例化时 ...
- SpringBoot自动配置的实现原理
之前一直在用SpringBoot框架,一直感觉SpringBoot框架自动配置的功能很强大,但是并没有明白它是怎么实现自动配置的,现在有空研究了一下,大概明白了SpringBoot框架是怎么实现自动配 ...
- SpringBoot自动配置原理学习
介绍 构建Springboot项目时我们会创建一个启动类 @SpringBootApplication public class DemoApplication { public static voi ...
- 这样讲 SpringBoot 自动配置原理,你应该能明白了吧
https://juejin.im/post/5ce5effb6fb9a07f0b039a14 前言 小伙伴们是否想起曾经被 SSM 整合支配的恐惧?相信很多小伙伴都是有过这样的经历的,一大堆配置问题 ...
随机推荐
- iphone对fixed模态框支持不太好,弹出窗口中滚动点击穿透的bug
iphone对fixed展现层中存在滚动内容支持非常不好, 尤其是背景页面产生滚动以后,输入控件就找不到了, 取消冒泡也不行,最后是这么解决的,可以参考 <style> .modeldiv ...
- Python7DAY-基础语法.md
# python简介 python交互器的作用:主要是是为了调试代码.
- maven deploy到私服去掉时间戳
直接上代码在插件中的配置. <plugin> <artifactId>maven-war-plugin</artifactId> <version>3. ...
- webview Java与JS互调
Android调用JS:方法一 webView.loadUrl("javascript:show('"+info+"')"); Android调用JS:方法二 ...
- ant design for vue 刷新页面,根据当前路由选中相应菜单
<a-menu theme="dark" mode="horizontal" class="menu__a" @select=&quo ...
- C/S 和 B/S架构
C/S 和 B/S架构 一.单机架构 应用领域: 植物大战僵尸 office 二.C/S架构 [ 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和 ...
- typescript-学习使用ts-3
函数 函数参数 参数及返回值类型 function add(x: number, y: number): number { return x + y } 可选参数 function add(x: nu ...
- C/C++ memcpy函数的用法
功能 memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中 头文件 所在头文件 <s ...
- Caffe Ubuntu14.04 + CUDA 8 (支持GTX1080 1070等Pascal架构显卡)
1. 前言 本教程使用的系统是Ubuntu 14.04 LTS 64-bit,使用的CUDA版本为8. 理论上本教程支持Pascal架构显卡,如游戏卡GeForce GTX1070,GTX 1080, ...
- $n$阶常微分方程通解中常数独立的意义
丁同仁,李承治编<常微分方程教程>第二版的定义1.3给出了 $ n$ 阶常微分方 程 $ {\displaystyle F(x,y,y',\cdots,y^{(n)})=0 \ \ \ \ ...