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;

  • 相关阅读:
    对在Qtopia中添加国际化支持一文补充
    在Redhat中添加微软雅黑字体
    QGridLayout中multi cell处理
    QScrollArea处理与显示问题
    升级ubuntu后EMACS 无法使用
    在Qtopia中添加国际化支持
    Delphi面向对象编程的20条规则
    Spring AOP 实例
    使用Dynamic LINQ实现Ext Grid的远程排序
    高效实现数据仓库的七个步骤
  • 原文地址:https://www.cnblogs.com/slowcity/p/9097969.html
Copyright © 2011-2022 走看看