Spring - 从工厂类注入 bean

Posted

技术标签:

【中文标题】Spring - 从工厂类注入 bean【英文标题】:Spring - Inject bean from a factory class 【发布时间】:2014-02-19 07:11:06 【问题描述】:

我的班级有以下内容:

public class Manager         
    private Apple apple = AppleFactory.createInstance();
    // .....

appContext.xml:

<bean id="manager" class="Manager"/>

AppleFactory 是一个我无法控制的外部库。我使用 xml 配置(appContext.xml)来连接 bean。如何从 appContext.xml 注入字段 apple?

【问题讨论】:

【参考方案1】:
<bean id="apple" class="AppleFactory" factory-method="createInstance" />
<bean id="manager" class="Manager"/>
<context:annotation-config />

你的经理

public class Manager 

    @Autowired
    private Apple apple;


应该做的伎俩。

见the reference guide和Initializing Spring bean from static method from another Class?

【讨论】:

【参考方案2】:

您可以使用以下配置:

<bean id="apple" class="jarpackagename.AppleFactory"
      factory-method="createInstance">
</bean>

<bean id="manager" class="pkgname.Manager">
    <property name="apple" ref="apple">
</bean>

【讨论】:

【参考方案3】:

你可以如下配置Manager bean

<bean class="xxx.Manager">
    <property name="apple">
        <bean class="yyy.AppleFactory" factory-method="createInstance" />
    </property>
</bean>

【讨论】:

以上是关于Spring - 从工厂类注入 bean的主要内容,如果未能解决你的问题,请参考以下文章

Spring入门到进阶 - Spring Bean管理 XML方式

004 简单工厂和工厂方法

我们可以有一个工厂类作为spring bean,并有一个工厂方法根据条件返回多个spring bean吗?

Java——Spring Bean管理

spring获取bean的几种方式

工厂方法与FactoryBean