1)@ConfigurationProperties支持批量注入
@ConfigurationProperties(prefix = “person”)
@ConfigurationProperties(prefix = "person")
public class Person {
@Value只能一个一个进行配置
@Value( "${person.name}")//配置文件属性注入
private String name;//类的属性
@Value("#{11*2}")//springSpEL表达式注入
private Integer age;
@value与bean中的配置属性作用相同
<bean class="Person">
<property name="name" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEll}"></property>
</bean>
2)@ConfigurationProperties支持松散语法绑定(比如person.lastNname和person.last-name均支持),@Value不支持
3)@ConfigurationProperties不支持SpEL表达式,@Value支持
4)@ConfigurationProperties支持JSR303数据校验,@Value不支持
在类上加上@Validated注解
5)@ConfigurationProperties支持复杂类型的封装,@Value不支持
配置yaml和properties它们均可以获取到值
如果说我们只是在某个业务逻辑中需要获取配置文件中的值,使用@Value,如果说我们专门编写了一个Javabean来和配置文件进行映射,我们直接使用@ConfigurationProperties