首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在调用factory-method前自动绑定类字段?

如何在调用factory-method前自动绑定类字段?
EN

Stack Overflow用户
提问于 2014-07-18 16:17:38
回答 2查看 343关注 0票数 0

由于项目结构的原因,我在使用@autowired注解时遇到了麻烦……我有一个类,应该是单例作用域的bean。

代码语言:javascript
复制
public class Dumper {

    public void dumpData() {
        //stuff
    }
}

应该在其他类中使用它

代码语言:javascript
复制
public class DataStore {

    @Autowired
    Dumper dumper;
}

但是DataDource类已经在使用factory-method=getInst的其他类中使用了,所以它在初始化之前是这样的

代码语言:javascript
复制
public class Singleton {
    @Autowired
    DataStore ds;
    Dao dao;
    getInst () {
        dao = Dao(ds);
//other stuff
    }
}

所以,当我使用@autowired连接到ds时,dao没有ds的实例...并创建类似bean的dao -调用许多类似这样的情况...有没有人知道在spring中有没有一些工具可以在调用工厂方法之前自动连接类的字段?

EN

回答 2

Stack Overflow用户

发布于 2014-07-18 20:35:45

一旦你写了DataStore ds = new DataStore();,任何spring初始化都不会在ds上发生。您必须在类Singleton中对其进行自动绑定,并使Singleton成为一个spring bean。出于同样的原因,您应该使dao成为ds,并在其中自动连接bean。如果你真的有很好的理由不这么做,你必须找到一个访问ApplicationContext的途径,并从中获取bean,但永远不要使用new创建它们(或者根本不使用spring ...)。

票数 0
EN

Stack Overflow用户

发布于 2014-07-18 21:10:48

代码语言:javascript
复制
public class Dumper {

    public void dumpData() {
        //stuff
    }
}


public class DataStore {

    @Autowired
    Dumper dumper;
}

现在,您应该创建Dao Bean,自动连接其中的数据存储

代码语言:javascript
复制
public class Singleton {

    @Autowired
    DataStore ds;
    Dao dao;
    getInst () {
        dao = Dao(ds);
    }
}

现在确保您已经在配置文件中正确地定义了引用bean,为了避免初始化,problem.That意味着数据存储bean被定义为dumper作为其引用,同时还为dumper定义了单独的bean。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24820297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档