使用Spring Boot,我可以将Bar的id,counter,active配置为其他配置名称吗?如果使用@Value($ {a.b.c.d})是简单的扁平化配置,我知道该怎么做,但是对于基于地图的配置,我该如何实现?
例如,在下面的Foo-Bar配置中,如何实现如下设置:
foo.bars.one.bar-counter=10
foo.bars.one.bar-id=1
public class Foo {
private Map<String, Bar> bars = new HashMap<>();
public Map<String, Bar> getBars() { .... }
}
public class Bar {
@Value(${bar-id}) // not work
private String id;
@Value(${bar-count}) // not work
private Integer counter;
}
答案 0 :(得分:0)
好吧,您必须使用Spring if (x != y) quotient = t / (x-y)
配置类,最终会得到类似以下的内容:
@ConfigurationProperties
这将为您提供一个import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "foo")
public class FooProperties {
private List<BarProperty> foos = new ArrayList<>();
public List<BarProperty> getFoos() {
return foos;
}
public void setFoos(List<BarProperty> foos) {
this.foos = foos;
}
public static class BarProperty {
private int barCounter;
private int barId;
public int getBarCounter() {
return barCounter;
}
public void setBarCounter(int barCounter) {
this.barCounter = barCounter;
}
public int getBarId() {
return barId;
}
public void setBarId(int barId) {
this.barId = barId;
}
}
}
这样的配置文件
application.properties
或foo.foos[0].bar-counter=1
foo.foos[0].bar-id=1
foo.foos[2].bar-counter=2
foo.foos[2].bar-id=2
application.yml
不要忘记在您的
foo: foos: - bar-counter: 1 bar-id: 1 - bar-counter: 2 bar-id: 2
中包含此依赖项以使用Spring Configuration Properties
pom.xml
希望有帮助。