默认:
ps:文件名固定,放在classpath:/或classpath:/config目录下
YAML不是一种标记语言;
YAML是专门用来写配置文件的语言,比xml、properties更适合作为配置文件;
YAML文件的后缀是.yml或.yaml 。
number: 12.5
str: hello
name: 'tom cruise' #如果字符串包含空格或者特殊字符,则必须使用引号引起来,单引号或双引号都可以
name: 'tom \n cruise' #单引号不会对特殊字符进行转义,结果:tom 换行 cruise
name: "tom \n cruise" #对特殊字符进行转义,会作为普通字符输出
2.对象,也称为Map映射,包含属性和值
#写法1:换行写,使用缩进
user:
name: tom
age: 21
# 写法2:行内写法
user: {name: tom,age: 21}
3.数组,如List、Set等
# 写法1:换行写,使用短横线
names:
- tom
- jack
- alice
# 写法2:行内写法
names: [tom,jack,alice]
通过添加新配置文件,为类中的属性注入值
添加依赖(可选)
org.springframework.boot
spring-boot-configuration-processor
true
#修改默认配置
server:
port: 8088 #写法key:value,冒号后面必须有空格
servlet:
context-path: /springboot03
user:
username: admin
age: 18
status: true
birthday: 2019/2/15
address:
province: 安徽省
city: 合肥市
lists:
- list1
- list2
- list3
maps: {k1: v1,k2: v2}
#server.port=8083
#server.servlet.context-path=/cz
user.username=alice
user.age=21
user.status=false
user.birthday=2019/1/15
user.address.province=安徽省
user.address.city=合肥市
user.lists=list1,list2,list2
user.maps.k1=v1
user.maps.k2=v2
@Value和@ConfigurationProperties的比较:
两种方式:
1.创建多个properties文件
2.定义yml文档块
步骤:
1. 创建不同环境的properties文件
文件命名要必须符合application-xxx.properties格式
可以在其内部配置不同的端口测试。
2. 在application.properties文件中指定要激活的配置
---
spring:
profiles: dev
server:
port: 9991
---
spring:
profiles: test
server:
port: 9992
---
spring:
profiles: prod
server:
port: 9993
使用@PropertySource加载外部的属性文件
// 将当前Bean添加到容器中
@Component
// 加载外部的属性文件
@PropertySource({"classpath:user.properties"})
// 默认读取全局配置文件获取值,将当前类中的属性与配置文件中的user进行绑定
@ConfigurationProperties(prefix = "user")
public class User implements Serializable {
使用@ImportResoruce加载外部的Spring的XML文件
ps:除非必要,否则不建议写xml文件
// 加载外部的spring配置文件
@ImportResource({"classpath:spring.xml"})
@SpringBootApplication
public class Springboot03ConfigApplication {
使用@Configuration和@Bean
//标注在类上,表示这是一个配置类,相当于以前编写的Spring配置文件
@Configuration
public class SpringConfig {
//标注在方法上,向容器中添加一个组件,将方法的返回值添加到容器中
@Bean
public Address address(){
Address address=new Address();
address.setProvince("安徽");
address.setCity("合肥");
return address;
}
}
SpringBoot应用启动时会加载主程序类,开启了自动配置功能@EnableAutoConfiguration
@EnableAutoConfiguration作用
利用@Import({AutoConfigurationImportSelector.class})向容器中添加一些组件(自动配置类)。
【查看AutoConfigurationImportSelector中的selectImports()方法;---->查看List configurations = this.getCandidateConfigurations(annotationMetadata, attributes)获取候选的配置;---->查看SpringFactoriesLoader.loadFactoryNames方法---->查看loadSpringFactories()方法---->查看classLoader.getResources(“META-INF/spring.factories”)加载META-INF/spring.factories】
通过这些自动配置类完成相应的配置功能
以HttpEncodingAutoConfiguration 为例,即原先在web.xml文件中配置的CharacterEncodingFilter过滤器
// 表示这是一个配置类,相当于原先编写的spring配置文件
@Configuration
// 启用HttpProperties类的ConfigurationProperties功能,通过配置文件为其属性注入值,并将其添加到容器中
@EnableConfigurationProperties({HttpProperties.class})
// 如果当前应用是Web应用,则该配置类生效,否则不生效
@ConditionalOnWebApplication(
type = Type.SERVLET
)
// 如果当前应用中有CharacterEncodingFilter类,则该配置类生效,否则不生效
@ConditionalOnClass({CharacterEncodingFilter.class})
// 如果配置文件中有spring.http.encoding.enabled选项,则该配置项生效,否则不生效,默认已经设置为True,所以默认生效
@ConditionalOnProperty(
prefix = "spring.http.encoding",
value = {"enabled"},
matchIfMissing = true
)
public class HttpEncodingAutoConfiguration {
private final Encoding properties;
// 将容器中HttpEncodingProperties注入
public HttpEncodingAutoConfiguration(HttpProperties properties) {
this.properties = properties.getEncoding();
} // 将方法返回值添加到容器中
@Bean
// 如果容器中没有这个组件,则添加
@ConditionalOnMissingBean
public CharacterEncodingFilter characterEncodingFilter() {
CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
filter.setEncoding(this.properties.getCharset().name());
filter.setForceRequestEncoding(this.properties.shouldForce(org.springframework.boot.autoconfigure.http.HttpProperties.Encoding.Type.REQUEST));
filter.setForceResponseEncoding(this.properties.shouldForce(org.springframework.boot.autoconfigure.http.HttpProperties.Encoding.Type.RESPONSE));
return filter;
}
#可以在yml文件中通过配置绑定某个类的属性值:
spring.http.encoding.charset=gbk
spring.http.encoding.force=true
【SpringBoot】最新版2019Spring Boot快速入门(速成SpringBoot)——学习笔记版解析【1】
【SpringBoot】最新版2019Spring Boot配置解析,源码解析(速成SpringBoot)——学习笔记版【2】
【SpringBoot】最新版2019Spring Boot之WEB开发——Thymeleaf模板引擎速成(速成SpringBoot)——学习笔记版解析【3】
【SpringBoot】最新版2019Spring Boot之MVC功能,异常处理,servlet容器(速成SpringBoot)——学习笔记版解析【4】
【SpringBoot】最新版2019Spring Boot之连接数据库——JDBC,MyBATIS,分页,MyBatisPlus(速成SpringBoot)——学习笔记版解析【5】