gpt4 book ai didi

java - 使用FactoryBean初始化的Bean接收FactoryBean而不是它创建的Obect

转载 作者:行者123 更新时间:2023-12-01 16:36:55 25 4
gpt4 key购买 nike

我试图用 xml 引用另一个 bean,发送一个由 FactoryBean 生成的对象。我的问题是 beanFactory 生成的数据显然是一个 FactoryBean 对象,并且没有应该由工厂创建的类型。

bean 的定义如下:

<bean id="daFactoryBean" class="com.whatever.something.MyFactoryBean">
[...]
</bean>

<bean id="theBeanThatProducesProblems" class="com.whatever.something.AGoodName">
<constructor-arg ref="daFactoryBean"/>
<constructor-arg ref="anotherBean"/>
</bean>

请注意,“daFactoryBean”将生成类型为“TheClassIWantToProduce”的对象。并且“theBeanThatProducesProblems”期望“daFactoryBean”上的类型,但它接收工厂本身。

factoryBean是这样定义的

public class MyFactoryBean implements 
FactoryBean<TheClassIWantToProduce> {
FactoryBean([..]) { [...] }
[...]
@Override
public TheClassIWantToProduce getObject() { [...] }
}

我需要生成的类是这个

public AGoodName extends RestTemplate { 
AGoodName(TheClassIWantToProduce foo, AnotherClassThatDoesnTComeFromAFactory foo2){
}
}

问题是我不完全知道如何在 spring 的 xml 中表达我想要工厂生成的对象,而不是工厂本身。由于类型无效,因此未初始化预期值。有什么提示吗?

最佳答案

解决了,我必须创建一个使用我的工厂 bean 的子 bean

<bean id="daFactoryBean" class="com.whatever.something.MyFactoryBean">
[...]
</bean>

<bean id="theBeanThatProducesProblems" class="com.whatever.something.AGoodName">
<constructor-arg>
<bean id="aNewBean" factory-bean="daFactoryBean" class="com.whatever.something.TheClassIWantToProduce"/>
</constructor-arg>
<constructor-arg ref="anotherBean"/>
</bean>

关于java - 使用FactoryBean初始化的Bean接收FactoryBean而不是它创建的Obect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61933728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com