zoukankan      html  css  js  c++  java
  • 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等。
  • 相关阅读:
    Eclipse中配置约束(DTD,XSD)
    Eclipse集成tomcat
    java使用dom4j对XML进行CURD操作
    SQL数据库操作(CURD)
    Java-IO流总结
    Java-集合框架总结
    AES apache commons-crypto 对称加密
    Redis
    Axis2 客户端调用 设置超时时间
    Sybase 修改数据库默认排序
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12246489.html
Copyright © 2011-2022 走看看