zoukankan      html  css  js  c++  java
  • springboot @value和@configurationproperties注解的区别

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

    所谓松散语法也就是属性命名规则(Relaxed binding)

    - person.firstName:使用标准方式
    - person.first-name:大写用-         
    - person.first_name:大写用_
    - PERSON_FIRST_NAME: 系统属性推荐使用这种写法

    @ConfigurationProperties支持松散语法         @Value不支持松散语法

    application.properties文件中有字段 persion.first-name

    @Component
    @ConfigurationProperties(prefix = "person") public class Person { private String firstName;
    }

    JSR303数据校验(@Validation)

    @ConfigurationProperties @Validated 支持      @Value不支持

    import javax.validation.constraints.NotNull;
    
    import org.hibernate.validator.constraints.Email;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.validation.annotation.Validated;
    
    @ConfigurationProperties
    @Validated
    public class Properties {
    
        @NotNull
        private String userName;
        
        @Email
        private String email;
        
    }

    SpEl

    @ConfigurationProperties不支持EL表达式

    application.properties文件中有字段 person.userAge=12 

    userAge = 12   //可以
    userAge = #{2*6}  //EL表达式不支持

    @Value支持EL表达式

    @Value(userAge=#{2*6}) //支持EL表达式
    

     

    使用原则:在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;如果专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

  • 相关阅读:
    java面试笔记6
    Java面试笔记5
    Java面试笔记5
    网上订单管理-新增
    网上订单管理-级联;可编辑列表
    网上订单管理-新增、修改
    数据库嵌套查询
    网上订单管理-数据呈现
    video 移动端内联播放,视频上层可显示弹幕、点赞。video转canvas播放
    vue 日期格式化过滤器
  • 原文地址:https://www.cnblogs.com/slowcity/p/9097969.html
Copyright © 2011-2022 走看看