在 Spring Boot 应用开发中,我们会常常借助Apollo,Spring Cloud Config等配置中心来集中管理配置信息,在拥有配置信息之后,高效且准确地读取这些配置信息无疑是极为关键的一环。今天我们就来介绍几个常用的用于配置值读取的注解。
@Value注解
@Value
注解是 Spring 中一种非常方便的用于注入配置值的方式,支持基本数据类型。
java
public class Demo1{
@Value("${url}")
private String url;
@Value("${gray.switch:true}")
private boolean graySwitch;
}
也支持数组以及列表类型。
java
@Value("${publish.id.array}")
private int[] publishId;
@Value("${employee.list}")
private List<String> employee;
这里补充一种场景,假如apollo服务端配置了key为url, value为http://wuai.test.com。
本地变量给了默认值。
java
@Value("${url:http://wuai.test1.com}")
private String url;
yml给了默认值。
java
url: "http://wuai.test2.com"
那么在应用启动的时候读取的url的值是哪个呢? http://wuai.test.com。
如果服务端配置没有url,那么读取到的url是http://wuai.test1.com。本地变量没有默认值,读取到的url是http://wuai.test2.com
@ApolloJsonValue注解
@ApolloJsonValue
是一个特定于 Apollo 配置中心的注解,它主要用于从 Apollo 配置中心读取以 JSON 格式存储的配置内容,并将其自动反序列化为 Java 对象。如,
java
public class User{
private String name;
private String sex;
private Integer age;
}
public class Demo2{
@ApolloJsonValue("${user.config}")
private User user;
}
以下是apollo配置。
@ConfigurationProperties 注解
@ConfigurationProperties
注解是一个非常有用的工具,常用于将外部配置属性绑定到 Java 对象。
java
@Component
@ConfigurationProperties(prefix = "event.listener")
public class EventListenerConfig {
private boolean enable;
private List<String> events;
}
@ConfigurationProperties
注解还支持嵌套对象,如。
java
@Component
@ConfigurationProperties(prefix = "event")
public class EventConfig {
private Object obj;
@Component
@ConfigurationProperties(prefix = "event.teller")
public class EventTellerConfig {
private boolean enable;
private List<String> events;
}
}