【发布时间】:2013-03-21 21:19:07
【问题描述】:
在创建其他依赖豆之前是否可以避免@Autowire 一些豆?让我用一个例子更好地解释它:
我有一个FactoryBean,它创建一个类型为A 的对象,该对象具有一个名为a 的属性。如果属性为空,它会为 bean A 分配一个默认值。
在@Configuration 类中我有:
@自动连线 私有的一个 myBean;发生的事情是工厂创建了 bean(我不完全理解如何)但是工厂中的字段 a 为空,我需要它需要另一个它习惯的 bean创建A。我无法向 Factory 添加任何注释,因为它位于外部依赖项中。
问题是我需要在@Autowired 向工厂请求对象之前设置a 的值。考虑到我的限制,这可能吗?
编辑 代码如下:
@Configuration
@ImportResource("classpath:factory-context.xml")
public class ServiceContextConfig {
@Autowired
private A createdObject;
@Bean(name = "entities-list")
public List<String> getEntity() {
List<String> ls = new ArrayList<String>();
ls.add("countriescatalog");
return ls;
}
那么 factory-context.xml 看起来是这样的:
<bean id="client-factory" class="ClientFactory">
<property name="entities" ref="entities-list"/>
</bean>
其实配置要大一点。我没有尝试像这样的简化示例。我将尝试使用像这样的简化上下文来重现它,看看我是否可以按照@emd 的建议修复它包装工厂
【问题讨论】:
-
请展示您的工厂如何创建您的 bean,例如。
<bean>声明