设计方案

YML语法及配置

2020-03-30  本文已影响0人  YAOPRINCESS

YML配置文件

SpringBoot使用一个全局的配置文件,配置文件名称是固定的

配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了

YAML(YML)

XML配置

<server>
    <port>8080</port>
</server>

YML配置

server:
    port: 8080
    
# 空格是不能缺少的

yml与properties进行对比

application.properties

#只能保存键值对

name=kang

student.name=kang
student.age=1

application.yml

#k=v
#对空格的要求十分高

#注入到我们的配置类

#普通的key-value
name: kang

#对象
student:
    name: kang
    age: 1

#对象行内写法
student: {name: kang,age: 1}

#数组
pets:
    - cat
    - dog
    - pig
    
#数组行内写法
pets: [cat,dog,pig]

yml可以给实体类赋值(注入)

  1. 定义一个pojo包下的Person类

    @Data        //lombok的注解,在编译时修改源码
    @Component   //这个注解相当于<bean id= ...>
    @ConfigurationProperties(prefix="person")
    //另一种方式,加载指定的配置类 @PropertySource(value="classpath:kang.properties"),然后在每个属性上@Vale("$(name)")
    public class Person{
        @Value("老王")
        private String name;
        private Integer age;
        private Boolean happy;
        private Date birth;
        private Map<String,Object>maps;
        private List<Object> lists;
        private Dog dog;
    }
    
  2. yml

    person:
      name: kang$(random.uuid)
      age: 1
      happy: false
      birth: 2019/11/02
      #maps是一个键值对,是一个对象
      maps: {k1: v1,k2: v2}
      #或者
      maps:
         k1: v1
         k2: v2
      #lists是一个集合框架,它是一个数组
      lists: 
         - code
         - music
         - girl
      #dog是一个类
      dog:
         name: 旺财
         #name: ${person.hello:hello}_旺财
         age: 1
    
  3. 使用@ConfigurationProperties注解

    1. 如果不配置使用了这个注解就会提示爆红
  4. 如何绑定

    1. 加上prefix="person"

      @ConfigurationProperties(prefix="person")

    2. 绑定起来就有注入的值了

测试:@Autowired

​ Person person=new Person();

多环境配置及配置文件位置

配置文件加载优先级:从上到下

多环境切换

properties

springboot的多环境配置,可以选择激活哪一个环境

spring.profiles.active=dev

yml

通过---,不用分多个文件

server:
    port:8081
#默认当前,可选择激活版本
spring:
    profiles:
        active:dev
    
---
server:
    port:8082
spring:
    profiles: dev
---
server:
    port:8083
spring:
    profiles:test
#spring.profile起名
上一篇 下一篇

猜你喜欢

热点阅读