基础知识
springboot的概念
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。它默认配置了很多框架的使用方式,实际上就是整合了许多其他框架。
springboot的核心配置文件
-
springboot的核心配置文件是什么?
- 答:springboot的核心配置文件是application配置文件(application.properties/application.yml)和bootstarp配置文件(bootstrap.properties/bootstrap.yml)
-
这两个核心配置文件的作用分别是什么?
- application配置文件:定义应用级别的参数配置,主要用于Springboot自动化配置文件
- bootstrap配置文件:定义系统级别的参数配置,这些参数一般是不会变动
- 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息
- 一些固定的不能被覆盖的属性
- 一些加密/解密的场景
-
两个核心配置文件在加载顺序上的区别
- 结论:boostrap配置文件先于application配置文件加载
- 说明:bootstrap配置文件用于应用程序上下文的引导阶段,由父Spring ApplicationContext加载。父ApplicationContext 被加载到使用application配置文件的之前。在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
springboot读取properties配置文件内容的三种方式
- @Value
* 使用 @Value 注解直接注入对应的值,这能获取到 Spring 中 Environment 的值 - @ConfigurationProperties
* 使用 @ConfigurationProperties 注解把对应的值绑定到一个对象 - Environment对象
* 直接获取注入 Environment 进行获取
springboot的配置文件格式
- 引语:SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件。
- 配置文件格式种类
- properties文件:key=value形式
- yaml(yml)文件:key: value形式(yaml和yml只是后缀名不同,其他都相同)
- 加载优先级:properties>yml>yaml
- 详解
- properties:多组key=value形式的key-value对
- yaml(yml)
- 基本语法:
- 大小写敏感
- 数据值(value)前面必须有空格
- 使用空格缩进代表层级关系,相同缩进为同一级
- 数据格式:
- 对象
- 数组:使用"-"表示数组的每个元素
- 纯量
- 参数引用:
- ${key}
- 基本语法:
开启springboot特性的两种方式
- 继承spring-boot-starter-parent项目
- 导入spring-boot-dependencies项目依赖
springboot的配置加载顺序
- 配置加载:以优先级高的配置文件为主,其中没有的配置由优先级低的补充。
启动原理
https://www.cnblogs.com/shamo89/p/8184960.html
自动配置原理
https://blog.csdn.net/u014745069/article/details/83820511
自定义starter
https://www.cnblogs.com/hello-shf/p/10864977.html
规范化流程
- 在父项目中新建两个module,xxx-spring-boot-starter用于管理依赖,xxx-spring-boot-configure用于完成自动装配核心功能。
- xxx-spring-boot-starter是一个空的jar文件,仅提供辅助性的依赖管理。在其pom.xml文件中配置依赖xxx-spring-boot-configure及需要的其他jar包。
- 在xxx-spring-boot-configure中编写自动配置类。(@Configuration、@ConfigurationProperties(prefix = “pname”)、@Bean)。使用@Configuration和@Bean注册需要的bean,使用@EnableConfigurationProperties开启参数接收
- 在xxx-spring-boot-configure的META-INF/spring.factories中指定starter的自动配置类
总结
- 提供模块需要的配置
- 使用需要的配置对模块需要的bean进行自动装配
- 实例化一个Bean对象返回,依赖放入就可以直接使用
其他常用注解
- @ConfigurationProperties
* 使用:@ConfigurationProperties(prefix = “pname”)
* 说明:在此种使用场景下,当@ConfigurationProperties注解修饰的Bean被实例化时,@ConfigurationProperties会将配置文件(application.properties)中对应前缀(pname)的后面的属性与Bean对象的同名属性匹配,符合条件则进行赋值。
知识点
- 声明式依赖
- 内嵌Tomcat
- 上下文根(context-path)
- 约定大于配置