1.yml的应用
application.yml可以作为springboot的全局配置文件
注意:springboot的配置文件名是固定的只能叫application
2.yml语法
1.以空格为缩进控制层级关系大小写敏感
server: #server的下级属性port前面有两个空格
port: 8888 #key:空格value
2.基本数据类型的写法(数字 字符串 布尔等)
number: 123
isPerson: true
str1: 张三 #字符串默认不用加上单引号或者双引号
str2: "张三\n李四" #双引号"" 不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思输出
#上述输出结果为 张三 换行 李四
str3: '张三\n李四' #单引号'' 会转义特殊字符,特殊字符最终只是一个普通的字符串数据
#删除输出结果为 张三\n李四
3.对象的写法
#方式一(推荐使用)
person:
name: parkour
age: 26
#方式二(行内写法)
student: {id: 110,name: parkour}
4.数组的写法
#方式一 用 -空格值 来表示数组中的元素
pets:
- cat
- dog
- pig
#方式二(行内写法)(推荐使用)
colors: [red,blue,yellow]
3.将yml配置文件中的数据映射到代码中
application.yml配置文件如下
server:
port: ${random.int[1024,9999]} #生成随机端口号
#在SpringCloud微服务中,不需要记录IP与端口可以使用随机生成
message:
hello: hello world
person:
name: parkour
age: ${random.int[18,30]} #使用函数生成随机值,该值只在加载配置文件的时候生成一次
isPerson: true
birth: 1993/12/09
likeColors: [red,blue,yellow]
str1: I like music
str2: "I like /n music"
str3: 'I like /n music'
SpringBoot中的代码如下
/**
* 将配置文件中的值全部映射到这个对象中
* 使用@ConfigurationProperties注解
* prefix 代表要将配置文件中的哪个属性下的属性注入
*/
@ConfigurationProperties(prefix = "person")
@Component
@Data
public class Person {
private String name;
private Integer age; //这里使用包装类型(阿里规范bean的属性使用包装类型)
private Boolean isPerson;//这里是使用包装类型
private Date birth;
private String[] likeColors;
private String str1;
private String str2;
private String str3;
}
测试代码如下
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
Person person;
@Value("${message.hello}") //获取属性文件中的属性使用"${}"
String helloWorld;
@Test
public void contextLoads() {
System.out.println(person);
System.out.println(helloWorld);
}
}
测试结果如下
Person(name=parkour, age=22, isPerson=true, birth=Thu Dec 09 00:00:00 CST 1993, likeColors=[red, blue, yellow], str1=I like music, str2=I like /n music, str3=I like /n music)
hello world
4.注意点
1.加上@ConfigurationProperties注解后
idea提示没有Spring Boot Configuration Annotation Processor not found in classpath
解决办法,在pom文件中添加下面依赖即可
加上此依赖就有代码提示了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>