我有一个使用框架的应用程序,该框架通过框架中的XML文件提供某些Spring bean。我的应用程序的配置目前部分以XML格式完成,但主要使用Spring注释。
某些XML bean定义的父级引用框架提供的bean,例如
<bean id="MyBean" parent="FrameworkBean">
<property name="context">
<map merge="true">
<entry key="SomeKey" value-ref="SomeValue" />
</map>
</property>
</bean>
FramwworkBean在框架中的XML文件中定义。有一系列的bean继承。在每个步骤中,一些条目被添加到上下文中:
<bean id="FrameworkBean" parent="AbstractBean">
<map merge="true">...
<bean id="AbstractBean" abstract="true" class="ClassWithContext"/>
我理解所有这些的结果是构造一个ClassWithContext 带有包含链中所有条目的映射的实例。 是否可以编写Java代码来执行相同操作,而无需从框架XML文件中复制代码?
@Bean("MyBean") ClassWithContext myBean() {
return ??? // code that uses "FrameworkBean" somehow
}
XML bean定义不依赖于AbstractBean的类型。 如果可以通过Java代码创建MyBean,那么该代码是否可以编写为与类型无关?或者我应该把它留在XML中?
答案 0 :(得分:1)
如果你的&#34; FrameworkBean&#34;不是抽象bean你可以尝试以下:
@Bean
public SomeType myBean(@Qualifier("FrameworkBean") FrameworkBeanType frameworkBean) {
SomeType type = getSomeType();
type.setFrameworkBean(frameworkBean);
return type;
}