我有一個Map<String, String>
,我想告訴Spring在創建bean和解析屬性佔位符時使用它。什麼是最簡單的方法來做到這一點?這裏是一個例子:如何告訴Spring使用Java映射解析屬性佔位符?
@Component
public class MyClass {
private String myValue;
@Autowired
public MyClass(@Value("${key.in.map}") String myValue) {
this.myValue = myValue;
}
public String getMyValue() {
return myValue;
}
}
public static void main(String[] args) {
Map<String, String> propertyMap = new HashMap<>();
propertyMap.put("key.in.map", "value.in.map");
ApplicationContext ctx = ...;
// Do something???
ctx.getBean(MyClass.class).getMyValue(); // Should return "value.in.map"
}
是否可以將Map鍵注入到次級的spring bean屬性中。首先你要做'新的HashMap <>();'。 Spring上下文將無法識別這個bean。你必須通過類似'ctx.getBean(java.util.HashMap.class)'的方式從Spring Context獲得這個bean。然後[這裏](http://stackoverflow.com/questions/27285202/inject-map-of-beans-using-spring-from-properties-file)是用戶能夠使用'
@ Amit.rk3感謝輸入Amrit。我不確定你完全瞭解這個設置。我對'ctx.getBean(HashMap.class)'不感興趣。我有一個String到String的映射,我想告訴Spring使用這個映射來解析屬性佔位符。 – Max
好的。在你的問題中你提到了java map。這讓我感到困惑:)。無論如何,只需從屬性列表映射字符串,就可以將條目保存在.properties文件中並加載它。對此有很多答案。 –