1、配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
•application.properties
•application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
之前玩MVC时候的配置文件多半是 xxx.xml的配置文件。
YAML:以数据为中心,比json、xml等更适合做配置文件;
<server>
<port>8080</port>
</server>
server:
port: 8080
2、YAML语法
1、基本语法
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
pool:
config:
coresize: 100
maxsize: 200
属性和值也是大小写敏感
2、值的写法
字面量:普通的值(数字,字符串,布尔)
字符串默认不用加上单引号或者双引号
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
k: v:在下一行来写对象的属性和值的关系;注意缩进
person:
name: zhangsan
sex: nan
age: 18
行内写法是这样的
person: {name: zhangsan,sex: nan,age: 18}
数组(List、Set):
用- 值表示数组中的一个元素
list:
- zhangsan
- lisi
- wangwu
行内写法:
list: [zhangsan,lisi,wangwu]
3、配置文件值注入
@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private String sex;
private List<String> friends;
private Pet pet;
}
如果爆出配置红色的:添加这个以来就好了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
乱码问题
解决方案如图所示.
**@Value获取值和@ConfigurationProperties获取值比较
**
先说一下@Value:
这是一个个指定的,比较麻烦,且不支持松散绑定
这里提一下松散绑定
驼峰式、下划线(_)、短横线(-)
标准方式
person.firstName
方式一
大写用-
person.first-name
方式二
大写用_
person.first_name
但是他是支持spel表达式的,但是这个表达式对字符串而言作用不会太大例如:
value="#{'北京'}"
没啥用属于是
他也不支持JSR303数据校验
说一下JSR303
也不支持复杂类型封装
再说一下ConfigurationProperties
他是批量注入配置文件中的属性 ,就像刚刚那个案例一样
它不支持Spel但是它支持松散绑定,JSR303数据校验,支持复杂类型封装
总结
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;
4、@PropertySource&@ImportResource&@Bean
@PropertySource:加载指定的配置文件;
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效; SpringBoot更应该用注解配置
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件
5、配置文件占位符
占位符获取之前配置的值,如果没有可以是用:指定默认值
person.name=${person.name:xiaoming}
6、Profile
1、多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;
2、yml支持多文档块方式
spring:
profiles: prod
3、激活指定profile
命令行:
java -jar spring-boot-demo02.jar --spring.profiles.active=dev;
可以直接在测试的时候,配置
传入命令行参数
7、配置文件加载位置
事实上,配置文件加载是有优先级的,相同的会被覆盖,不同的会互补。
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
我们还可以通过spring.config.location来改变默认的配置文件位置
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默
认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-demo02.jar --spring.config.location=E:/application.properties
8、结束语
姑且到此为止,这一小节中我们知道了SPRINGBOOT的配置文件的写法属性包括配置文件的位置和加载顺序。
1、寄语
Springboot的东西还是很多的,但是核心就那么几个,只要慢慢去看,去学习,一定能够掌握。掌握了Springboot。干活就不难了!