springboot配置文件注入Mapvalue为自定义复杂对象
可以使用@ConfigurationProperties注解和@Value注解来实现在Spring Boot配置文件中注入Map,value为自定义复杂对象。
- 使用@ConfigurationProperties注解
在配置文件中添加配置项,例如:
myapp.users[0].name=Tom
myapp.users[0].age=18
myapp.users[0].address.city=Beijing
myapp.users[0].address.street=Haidian
myapp.users[1].name=Jerry
myapp.users[1].age=20
myapp.users[1].address.city=Shanghai
myapp.users[1].address.street=Pudong
在Java类中使用@ConfigurationProperties注解将配置项注入至Map中:
@Component
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfig {
private Map<String, User> users = new HashMap<>();
public Map<String, User> getUsers() {
return users;
}
public void setUsers(Map<String, User> users) {
this.users = users;
}
}
其中User为自定义复杂对象,包含name、age和address属性。
- 使用@Value注解
在配置文件中添加配置项,例如:
myapp.users=Tom:18:Beijing:Haidian,Jerry:20:Shanghai:Pudong
在Java类中使用@Value注解将配置项注入至Map中:
@Component
public class MyAppConfig {
private Map<String, User> users = new HashMap<>();
@Value("#{T(java.util.Arrays).stream('${myapp.users}').map(s -> s.split(':')).collect(T(java.util.stream.Collectors).toMap(a -> a[0], a -> new User(a[0], Integer.parseInt(a[1]), new Address(a[2], a[3]))))}")
public void setUsers(Map<String, User> users) {
this.users = users;
}
public Map<String, User> getUsers() {
return users;
}
}
其中User和Address为自定义复杂对象,通过@Value注解解析配置项,创建Map对象
原文地址: https://www.cveoy.top/t/topic/fFmU 著作权归作者所有。请勿转载和采集!