获取Spring默认的全局配置文件
方式一:
使用@Value注解实现
application.yml配置文件
server:
port: 8081
person:
name: "李四"
age: 18
message: 666
使用实例:
@RestController
@Slf4j
public class TestController {
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age;
@Value("${person.message}")
private String message;
}
注意:
- 此方式有不足之处就是@Value(“${person.name”)中的person.name在配置文件application.yml中必须存在,若不存在则回报如下的错误:
解决此项错误:在配置文件添加对应的属性或在@Value注解中使用默认值,@Value注解使用默认值方式如下
- @Value(“${person.name:}”):表示配置文件没有name属性时,name的默认值为空
- @Value(“${person.name:张三}”):表示配置文件没有name属性时,name的默认值为张三
若配置文件中有对应的属性,则默认值会被配置文件中的值覆盖
此方只适合读取配置文件属性较少时使用
方式二:
使用@ConfigurationProperties注解
application.yml配置文件
server:
port: 8082
person:
name: "李四"
age: 19
message: 777
使用实例:
@Data
@Configuration
@ConfigurationProperties(prefix = "person") //perfix绑定配置文件的前缀
public class AppConfig {
private String name;
private Integer age;
private String message;
}
此方法适用于获取配置文件属性较多的情况下使用,具体看个人喜好
方式三:
使用Environment来获取,Environment是有Spring底层提供的Api,也是一个bean
application.yml配置文件
server:
port: 8083
person:
name: "王五"
age: 20
message: 888
使用实例:
@RestController
public class TestController{
@Resource
private Environment environment;
@GetMapping("/test")
public UserInfo getUserInfo(){
UserInfo userInfo = new UserInfo();
String name = environment.getProperty("person.name");
Integer age = Integer.valueOf(environment.getProperty("person.age"));
String message = environment.getProperty("person.message");
userInfo.setName(name);
userInfo.setAge(age);
userInfo.setMessage(message);
return userInfo;
}
}
或
@RestController
public class TestController implements EnvironmentAware {
private Environment environment;
@GetMapping("/test")
public UserInfo getUserInfo(){
UserInfo userInfo = new UserInfo();
String name = environment.getProperty("person.name");
Integer age = Integer.valueOf(environment.getProperty("person.age"));
String message = environment.getProperty("person.message");
userInfo.setName(name);
userInfo.setAge(age);
userInfo.setMessage(message);
return userInfo;
}
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}
此方法适用于动态获取配置文件信息的情况下使用
以上三种方式是获取Spring默认的全局配置文件
另外还有获取外部配置文件:参考链接