• springboot配置之获取配置文件中属性的第二种方法(@Value)不同于@ConfigurationProperties


    直接看:Person.java

    package com.gong.springboot.bean;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    import java.util.List;
    import java.util.Map;
    
    //将配置文件中的属性映射到组件中
    //prefix:表示配置文件中的哪个下面的属性进行一一映射
    @Component
    //@ConfigurationProperties(prefix="person")
    public class Person {
        /**<bean clas="Person">
         *      <property name="username" value="字面量/${key}从环境变量中获取值/#{}spel"></property>
         * </bean>
         *
         */
        @Value("${person.username}")
        private String username;
        @Value("#{11*2}")
        private Integer age;
        @Value("test@qq.com")
        private String email;
    //@Value{"person.maps"} 会报错
    private Map<String,Object> maps; private List<Object> lists; private Dog dog;
    ......
    ]

    运行测试:

    Person{username='张三', age=22, email='test@qq.com', maps=null, lists=null, dog=null}

    它们之间的不同点:

    • ConfigurationProperties:批量注入配置文件中的属性,Value:一个个绑定
    • ConfigurationProperties:支持松散绑定。所谓松散绑定,就是在配置文件中使用:
      last-name、last_name、lastName都会被标识为lastName。而Value中不支持。
    • ConfigurationProperties不支持spel表达式,Value中支持。
    • ConfigurationProperties支持JSR303校验,Value不支持。
    • ConfigurationProperties支持复杂类型封装,Value不支持,也就是说Value不支持Map等。
  • 相关阅读:
    序列化和反序列化
    抽象类与接口
    为了忘却的纪念
    gmail和hotmail也有企业邮局
    tag's tag
    在互联网上裸奔
    音乐网站,可以自己弹琴,歌谱整理
    今天看了ning的介绍,很有意思
    昨天服务器出现问题,解决过程如下所述
    google Trends
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12246489.html
Copyright © 2020-2023  润新知