SpringBoot系列(二)配置文件

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>

乱码问题
SpringBoot系列(二)配置文件
解决方案如图所示.

**@Value获取值和@ConfigurationProperties获取值比较
**
先说一下@Value:
这是一个个指定的,比较麻烦,且不支持松散绑定
这里提一下松散绑定

驼峰式、下划线(_)、短横线(-)

标准方式 
person.firstName

方式一 
大写用- 
person.first-name

方式二 
大写用_ 
person.first_name

但是他是支持spel表达式的,但是这个表达式对字符串而言作用不会太大例如:

value="#{'北京'}"

没啥用属于是
他也不支持JSR303数据校验
说一下JSR303
SpringBoot系列(二)配置文件
也不支持复杂类型封装

再说一下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。干活就不难了!

上一篇:MIME 类型


下一篇:学习微信小程序之css2