使用注释

时间:2017-08-17 21:04:07

标签: spring

我有一个使用框架的应用程序,该框架通过框架中的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中?

1 个答案:

答案 0 :(得分:1)

如果你的&#34; FrameworkBean&#34;不是抽象bean你可以尝试以下:

@Bean
public SomeType myBean(@Qualifier("FrameworkBean") FrameworkBeanType frameworkBean) {
    SomeType type = getSomeType();
    type.setFrameworkBean(frameworkBean);
    return type;
}