• 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等。
  • 相关阅读:
    chrome书签插件
    Js箭头函数和lambda
    CSS水平或垂直居中技巧
    前端需要注意的SEO优化
    OpenCV图像识别初探-50行代码教机器玩2D游戏
    机器学习笔记(十一)----降维
    基于Docker搭建分布式消息队列Kafka
    一个经典面试题:如何保证缓存与数据库的双写一致性?
    Flask 蓝图机制及应用
    软件开发团队如何管理琐碎、突发性任务
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12246489.html
Copyright © 2020-2023  润新知