SpringBoot使用一个全局的配置文件,配置文件名是固定的,有下面两种文件:
- application.properties
- application.yml
application.properties配置文件
# 字面量(数字,字符串,布尔) user.user-name=张三 # 对象 user.user-name=45678 user.pwd=123456 user.mobile=18393948482 user.age=25 # 数组 user.hobby=吃饭,睡觉,打豆豆 # Map对象 user.map.k1=123456 user.map..k2=456789
需要注意的是:字符串不需要使用双引号或者单引号,如果有写只会当做字符串的一部分,原样输出。
测试代码如下:
//读取配置文件,并注入属性 import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Map; @Data @Component @ConfigurationProperties(prefix = "user") public class User { private String userName; private String mobile; private String pwd; private int age; private String[] hobby; private Map<String,String> map; } //测试 import com.example.demo.entity.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class DemoApplicationTests { @Autowired User user; @Test public void contextLoads() { System.out.println(user); String[] hobbys = user.getHobby(); for (String str:hobbys ) { System.out.println(str); } } } //输出结果 2019-07-03 16:56:39.609 INFO 5596 --- [ main] com.example.demo.DemoApplicationTests : Started DemoApplicationTests in 3.887 seconds (JVM running for 4.7) User(userName='张三/n', mobile=18393948482, pwd=123456, age=25, hobby=[吃饭, 睡觉, 打豆豆], map={k1=123456, k2=456789}) 2019-07-03 16:56:39.851 INFO 5596 --- [ Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
application.yml配置文件
yaml语法介绍
- k:(空格)v:表示一对键值对(空格必须有);
- 以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的;
- 属性和值也是大小写敏感;
- k:v:字面直接写;
- 字符串默认不用加上单引号或者双引号;
- "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 name:"zhangsan\nlisi":输出;zhangsan换行lisi
- '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
- ---:代表区块,将一个ymal文件分为多个文件
yaml基本用法
# 字面量(数字,字符串,布尔) server: port: 8081 user: user-name: 张三 age: 26 mobile: 18369615874 # 数组行内写法 # hobby: [吃饭,睡觉,打豆豆] # map行内写法 # map: {k1: 吃饭,k2: 睡觉} pwd: 123456 hobby: - 吃饭 - 睡觉 - 打豆豆 map: k1: 吃饭 k2: 睡觉 --- # 对象行内写法 user: {user-name: 张三,pwd: 123456,mobile: 1839394721,hobby: [吃饭,睡觉,打豆豆],map: {k1: 吃饭,k2: 睡觉},age: 26}
验证结果:
2019-07-03 17:21:32.074 INFO 32672 --- [ main] com.example.demo.DemoApplicationTests : Started DemoApplicationTests in 3.201 seconds (JVM running for 3.923) User(userName=张三, mobile=18369615874, pwd=123456, age=26, hobby=[吃饭, 睡觉, 打豆豆], map={k1=吃饭, k2=睡觉}) 吃饭 睡觉 打豆豆
Springboot的两种配置文件语法详细介绍