YML
发表于:2018-05-13 | 分类: 后端

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>
2.配置文件中的布尔值,对应对象属性中的布尔值必须要是包装类型的Boolean
上一篇:
markdown
下一篇:
Docker