我正在尝试覆盖在父 xml 和子 xml 中定义的键的映射值,该键在 MBeanExporter 的上下文中导入父 bean。我尝试了几种组合,bean 的“父”属性、“registrationBehaviorName”属性以及地图本身的“合并”属性(所有这些都出现在下面的代码中):
父 Xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<bean id="parentExporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="autodetect" value="false" />
<property name="beans">
<map>
<entry key="theKey" value-ref="parentValue" />
</map>
</property>
</bean>
</beans>
儿童 Xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<import resource="classpath:/META-INF/parent-context.xml"/>
<bean id="childExporter" parent="parentExporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="autodetect" value="false" />
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
<property name="beans">
<map merge="true">
<entry key="theKey" value-ref="childValue" />
</map>
</property>
</bean>
</beans>
我正在寻找为父母获取键“theKey”的值“parentValue”和为孩子获取键“theKey”的值“childvalue”。根据从互联网收集的属性/属性的使用组合,我目前遇到两个不同的错误......
No unique bean of type XXX is defined: expected single bean but found 2: parentValue,keyValue
或一个BeanAlreadyExistsException
。我知道父子可能不是实现我想要做的事情的最佳方式,但我正在一个更大的环境中工作,这个结构不能被修改(因为我没有包含在代码中的许多其他 bean 是当下)。
我正在尝试做的实际上可能吗?我不是 Spring 专家,我无法在文档和其他来源上找到可行的解决方案。