在bean生命周期中更改spring占位符值

时间:2018-09-10 09:08:01

标签: java spring configuration spring-bean spring-config

我有一个包含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字段,可通过该字段读取属性。

我没有找到一种动态加载类别占位符的方法。我想知道是否可以根据类别加载占位符值并从地图的键中读取该值。也就是说,在创建category1category1.bean1时,占位符取值category1.bean7;当category2到{{1}时,占位符取值category2.bean1。 }等。

谢谢。

0 个答案:

没有答案