我有一个包含util:map
的XML配置文件,每个关键元素都引用了一个bean。
<util:map id="map">
<entry key="category1" value-ref="category1.bean1"/>
<entry key="category2" value-ref="category2.bean1"/>
<entry key="category3" value-ref="category3.bean1"/>
<entry key="category4" value-ref="category4.bean1"/>
</util:map>
基本上,对于映射中的每个键,都会引用并创建一个bean。现在,每个Bean都引用另一个Bean,并且此操作将继续进行5次,即:总共创建了7个Bean
map-key -> bean1 -> bean2 -> ... -> bean7
现在,如果我想在地图中添加其他类别,则必须复制XML配置文件的内容。到目前为止,该地图有4个类别,即:7 x 4 = 28豆,由于树木,我看不到森林。
我要实现的是:基于键值,创建7个bean,而不必复制XML文件的内容。
因此,为了做到这一点,我只将地图保留为XML,所有XML Bean均移至了代码中。我创建了7个类,每个类都用@Configuration
和@PropertySource(value = "classpath:/${category1}/overrides.properties")
注释,其中category1
是一个文件夹,override.properties
包含相同的键集,但是每个类别的值不同。每个类都有一个自动连线的spring Environment
字段,可通过该字段读取属性。
我没有找到一种动态加载类别占位符的方法。我想知道是否可以根据类别加载占位符值并从地图的键中读取该值。也就是说,在创建category1
到category1.bean1
时,占位符取值category1.bean7
;当category2
到{{1}时,占位符取值category2.bean1
。 }等。
谢谢。