zoukankan      html  css  js  c++  java
  • 读取yml配置文件中的值

    1.yml文件

    person:
        lastName: hello
        age: 18
        boss: false
        birth: 2017/12/12
        maps: {k1: v1,k2: 12}
        lists:
          - lisi
          - zhaoliu
        dog:
          name: 小狗
          age: 12

    2.javaBean

    /**
     * 将配置文件中配置的每一个属性的值,映射到这个组件中
     * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
     *      prefix = "person":配置文件中哪个下面的所有属性进行一一映射
     *
     * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
     *
     */
    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
    
        private String lastName;
        private Integer age;
        private Boolean boss;
        private Date birth;
    
        private Map<String,Object> maps;
        private List<Object> lists;
        private Dog dog;
    }

    3.pom.xml导入依赖

    <!--导入配置文件处理器,配置文件进行绑定就会有提示-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>

    注:这里可能需要启动一下项目,使之生效

    4.@value 注解获取yml配置文件中的数据,以及@Validated进行数据校验

    @Component
    //@ConfigurationProperties(prefix = "person")
    @Validated
    public class Person {
    
        /**
         * <bean class="Person">
         *      <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>
         * <bean/>
         */
    
       //lastName必须是邮箱格式
        @Email
        @Value("${person.last-name}")
        private String lastName;
        @Value("#{11*2}")
        private Integer age;
        @Value("true")
        private Boolean boss;
    
        private Date birth;
        private Map<String,Object> maps;
        private List<Object> lists;
        private Dog dog;

    5.@ConfigurationProperties(prefix = "person") 和 @value的区别

     |            | @ConfigurationProperties | @Value |
    | ---------- | ------------------------ | ------ |
    | 功能               | 批量注入配置文件中的属性             | 一个个指定  |
    | 松散绑定(松散语法)   | 支持                                | 不支持    |
    | SpEL               | 不支持                            | 支持     |
    | JSR303数据校验       | 支持                              | 不支持    |
    | 复杂类型封装          | 支持                               | 不支持    |

    6.总结

     配置文件yml还是properties他们都能获取到值;

    如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

    如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

  • 相关阅读:
    PyCharm 2017.1.3版本破解
    Python 字典
    Python 列表和元组
    总结2016,展望2017
    使用MATLAB对图像处理的几种方法(下)
    使用MATLAB对图像处理的几种方法(上)
    忍不住想,我为什么要来大城市?
    学习技术的心得
    Net中的常见的关键字
    面向对象的JS(一)
  • 原文地址:https://www.cnblogs.com/gxlaqj/p/11676875.html
Copyright © 2011-2022 走看看