对比点 | @ConfigurationProperties | @Value |
底层框架 | Spring Boot | Spring |
功能 | 批量注入配置文件中的属性 | 单个注入 |
复杂类型属性注入 | 支持 | 不支持 |
setter方法 | 需要 | 不需要 |
松散绑定 | 支持 | 不支持 |
JSR303数据校验 | 支持 | 不支持 |
SpEL表达式 | 不支持 | 支持 |
@ConfigurationProperties使用示例:
Chicken.java
@Component
@ConfigurationProperties(prefix = "chicken")
public class Chicken {
private String name;
private String motto;
private String sex;
public void setName(String name) {
this.name = name;
}
public void setMotto(String motto) {
this.motto = motto;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Chicken{" +
"name='" + name + '\'' +
", motto='" + motto + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
application.properties
chicken.name="坤坤"
chicken.motto="个人练习时长两年半,喜欢、唱跳、rap、篮球"
chicken.sex="female"
DemoApplicationTests
@Autowired
Chicken chicken;
@Test
void chicken(){
System.out.println(chicken.toString());
}
@Value使用示例:
Chicken.java
@Component
public class Chicken {
@Value("${chicken.name}")
private String name;
@Value("${chicken.motto}")
private String motto;
@Value("${chicken.sex}")
private String sex;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", motto='" + motto + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
application.properties
chicken.name="坤坤"
chicken.motto="个人练习时长两年半,喜欢、唱跳、rap、篮球"
chicken.sex="female"
DemoApplicationTests
@Autowired
Chicken chicken;
@Test
void chicken(){
System.out.println(chicken.toString());
}