SpringBoot .yml配置文件

来源:互联网 发布:高校教师资格证网络 编辑:程序博客网 时间:2024/05/17 01:52

相关介绍:

SpringBoot支持一种以.yml后缀结尾的配置文件SpringBoot启动时也会默认加载application.yml配置文件。.propertie和.yml配置文件同时存在时,SpringBoot会优先加载.yml(SpringBoot会把.yml转化为.properties文件)

.yml文件是YAML 语言编写的。YAML 是专门用来写配置文件的语言,非常简洁和强大

YAML 语言教程参考:

快速入门:

application.yml

ymlEntity:  #String  等价于properties中:ymlEntity.simpleTypeProp=simpleDataType  simpleTypeProp: simpleDataType  #数组  arrayTypeProp: 1,2,3,4,5,6,7,8  #集合类型:List  listTypeProp:        - oneData        - twoData        - threeData  #集合类型:Map  mapTypeProp:        key1: value1        key2: value2        key3: value3  #复杂类型:List<Map>  ListMapProp:        - id: 123456          name: zjh        - age: 18          addr: 海淀          #支持变量引用:        - param: "${ymlEntity.simpleTypeProp},${ymlEntity.simpleTypeProp}"  student: {id: 12345, name: zjhTest,age: ~}

YmlEntity类引用配置项属性值:因为是通过Get/Set方法把配置项给对应对象属性赋值,所以必须生成Set/Get方法。

  1. key: value 中间的空格不可少。
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格。
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
  5. # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
  6. 使用变量时”${ymlEntity.simpleTypeProp}”
  7. ~代表NULL
  8. 字符串value之中包含空格或特殊字符,需要放在引号之中。
  9. 单引号和双引号都可以使用,双引号不会对特殊字符转义。
public class Student {    private Integer id;    private String name;    private Integer age;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @Override    public String toString() {        return "Student{" +                "id=" + id +                ", name='" + name + '\'' +                ", age=" + age +                '}';    }
@Component@ConfigurationProperties(prefix="ymlEntity")public class YmlEntity {    //@Value("${ymlEntity.simpleTypeProp}")    private String simpleTypeProp;    //@Value("${ymlEntity.arrayTypeProp}")    private String [] arrayTypeProp;    //@Value("${ymlEntity.listTypeProp}")    private List<String> listTypeProp;    //@Value("${ymlEntity.mapTypeProp}")    private Map<String,String> mapTypeProp;    //@Value("${ymlEntity.ListMapProp}")    private List<Map<String,String>> ListMapProp;    //@Value("${ymlEntity.student}")    private Student student;    public void setSimpleTypeProp(String simpleTypeProp) {        this.simpleTypeProp = simpleTypeProp;    }    public void setArrayTypeProp(String[] arrayTypeProp) {        this.arrayTypeProp = arrayTypeProp;    }    public void setListTypeProp(List<String> listTypeProp) {        this.listTypeProp = listTypeProp;    }    public void setMapTypeProp(Map<String, String> mapTypeProp) {        this.mapTypeProp = mapTypeProp;    }    public void setListMapProp(List<Map<String, String>> listMapProp) {        ListMapProp = listMapProp;    }    public String getSimpleTypeProp() {        return simpleTypeProp;    }    public String[] getArrayTypeProp() {        return arrayTypeProp;    }    public List<String> getListTypeProp() {        return listTypeProp;    }    public Map<String, String> getMapTypeProp() {        return mapTypeProp;    }    public List<Map<String, String>> getListMapProp() {        return ListMapProp;    }    public Student getStudent() {        return student;    }    public void setStudent(Student student) {        this.student = student;    }}

@Value测试失败,暂时没找到原因。请留言多谢。
@ConfigurationProperties(prefix=”ymlEntity”)注解在创建Bean时会把该前缀的配置项与属性值一一对应赋值。需要添加Maven依赖:

<!-- 支持 @ConfigurationProperties 注解 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-configuration-processor</artifactId>            <optional>true</optional>        </dependency>

DemoApplicationTests

@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests {    @Autowired    private YmlEntity   ymlEntity;    @Test    public void contextLoads() {        System.out.println("ymlEntity.simpleTypeProp:"+ymlEntity.getSimpleTypeProp());        System.out.println("ymlEntity.arrayTypeProp:"+ JSON.toJSONString(ymlEntity.getArrayTypeProp()));        System.out.println("ymlEntity.listTypeProp:"+ymlEntity.getListTypeProp());        System.out.println("ymlEntity.mapTypeProp:"+ymlEntity.getMapTypeProp());        System.out.println("ymlEntity.ListMapProp:"+ymlEntity.getListMapProp());        System.out.println("ymlEntity.student:"+ymlEntity.getStudent().toString());    }}   
阅读全文
0 0
原创粉丝点击