@ConfigurationProperties使用及与@Value对比

两者区别

  1. @ConfigurationProperties:可以将配置文件中的属性值批量注入到类的各个属性;
    @Value:为类中的各个属性逐个赋值

  2. @ConfigurationProperties支持松散绑定;@Value不支持

     松散绑定:指的是配置文件中的命名规则
     比如说:
     config.test.oldOne=HelloWord:对应的类的属性是oldOne
     config.test.old-one=HelloWord:对应的属性是oldOne
     config.test.old_one=HelloWord:对应的属性是oldOne
     config.test.OLD_ONE=HelloWord:系统推荐写法对应的属性是oldOne
    
  3. @ConfigurationProperties支持@Validated;@Value不支持

  4. @ConfigurationProperties不支持EL表达式;@Value支持

  5. @ConfigurationProperties支持复杂类型;@Value不支持

    配置文件:@ConfigurationProperties使用及与@Value对比_第1张图片
    类:
    @ConfigurationProperties使用及与@Value对比_第2张图片

结果:
@ConfigurationProperties使用及与@Value对比_第3张图片

@ConfigurationProperties使用

在这里介绍两种使用方式
第一种:一般在配置环境的时候使用
配置文件:
@ConfigurationProperties使用及与@Value对比_第4张图片
对应类:
@ConfigurationProperties使用及与@Value对比_第5张图片
配置类:在这里有个@EnableConfigurationProperties注解,意思是让@ConfigurationProperties这个注解生效
@ConfigurationProperties使用及与@Value对比_第6张图片
在配置中debug看一下是否有数据:
@ConfigurationProperties使用及与@Value对比_第7张图片
第二种方式:一般通过注入来使用
配置文件:
@ConfigurationProperties使用及与@Value对比_第8张图片
对应类:只需要加一个能够被spring扫描到的注解就可以
@ConfigurationProperties使用及与@Value对比_第9张图片
写一个简单的controller用来测试
@ConfigurationProperties使用及与@Value对比_第10张图片

结果:
@ConfigurationProperties使用及与@Value对比_第11张图片

你可能感兴趣的:(Java)