@RestController
public class HelloController {
@Value("${config.name}")
private String config;
@GetMapping("config")
public String config(){
return JSON.toJSONString(config);
}
}
使用@value注解注入配置,通常情况下有个要求就是,注解里面的变量,必须在application.properties文件里面事先定义好,否则启动报错!
当然,如果我们不想让它抱错,我们可以给它一个缺省值xxx,比如:
@Value("${config.name:xxx}")
private String config;
这样,SpringBoot 项目在启用时不会报错!
2.2、通过@ConfigurationProperties注解实现参数加载
某些场景下,@value注解并不能满足我们所有的需求,比如参数配置的数据类型是一个对象或者数组,这个时候才用@ConfigurationProperties会是一个比较好的选择!
- 配置一个对象类型的参数
例如在application.properties文件里,当我们想配置一个对象类型的参数,我们可以这样操作!
//参数定义
config2.name=demo_1
config2.value=demo_value_1
然后,创建一个配置类Config2,用于将定义的变量映射到配置类里面。
@Component
@ConfigurationProperties(prefix = "config2")
public class Config2 {
public String name;
public String value;
//...get、set
}
读取数据的方式,也很简单,直接注入到对应的类里面就可以了
@RestController
public class HelloController {
@Autowired
private Config2 config2;
@GetMapping("config2")
public String config2(){
return JSON.toJSONString(config2);
}
}
- 配置一个Map类型的参数
例如在application.properties文件里,当我们想配置一个 Map 类型的参数,我们可以这样操作!
//参数定义
config3.map1.name=demo_id_1_name
config3.map1.value=demo_id_1_value
config3.map2.name=demo_id_2_name
config3.map2.value=demo_id_2_value
然后,创建一个配置类Config3,用于将定义的变量映射到配置类里面。
@Component
@ConfigurationProperties(prefix = "config3")
public class Config3 {
private Map map1 = new HashMap