加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java-使用工厂方法的Spring autowire对象

发布时间:2020-12-15 01:22:12 所属栏目:大数据 来源:网络整理
导读:我试图弄清楚如何将此java代码更改为spring private MyObject myObject = MyObjectFactory.getService(); 在我的Foo.java类中 @Autowiredprivate MyObject myObject; 在spring xml中,我有: bean id="MyObject" class="path.to.MyObjectFactory" factory-met

我试图弄清楚如何将此java代码更改为spring

private MyObject myObject = MyObjectFactory.getService();

在我的Foo.java类中

@Autowired
private MyObject myObject;

在spring xml中,我有:

<bean id="MyObject" class="path.to.MyObjectFactory" factory-method="getService"></bean>

<bean id="Foo" class="path.to.Foo">
    <property name="myObject" ref="MyObject"/>
</bean>

错误是

No matching bean of type [path.to.MyObject] found for dependency: 
expected at least 1 bean which qualifies as autowire candidate for this dependency.
最佳答案
您尝试将MyObjectFactory类型的对象注入到path.to.Foo中,在其中应该有MyObject类型的对象.请按以下方式更改您的代码:

Foo:

public class Foo {
    private MyObject myObject;
    public void setMyObject(MyObject value) { myObject=value;}
}

MyObjectFactory:

public class MyObjectFactory {
    public MyObject getService() {
        return new MyObject();
    }
}

春季xml:

<bean class="MyObjectFactory" id="factory" />
<bean id="myObject" factory-bean="factory" factory-method="getService" scope="prototype" />

<bean id="Foo" class="path.to.Foo">
    <property name="myObject" ref="MyObject"/>
</bean>

顺便说一下,@ Autowired和< property ...>在您的情况下表达相同的内容,因此您可以忽略其中一个.

更新:

请看一下here,以获取更多信息.

我以为您不想要单例,这就是为什么我添加了scope =“ prototype”.如果您的MyObject实例假定为单例,请将其删除.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读