由于项目结构的原因,我在使用@autowired注解时遇到了麻烦……我有一个类,应该是单例作用域的bean。
public class Dumper {
public void dumpData() {
//stuff
}
}应该在其他类中使用它
public class DataStore {
@Autowired
Dumper dumper;
}但是DataDource类已经在使用factory-method=getInst的其他类中使用了,所以它在初始化之前是这样的
public class Singleton {
@Autowired
DataStore ds;
Dao dao;
getInst () {
dao = Dao(ds);
//other stuff
}
}所以,当我使用@autowired连接到ds时,dao没有ds的实例...并创建类似bean的dao -调用许多类似这样的情况...有没有人知道在spring中有没有一些工具可以在调用工厂方法之前自动连接类的字段?
发布于 2014-07-18 20:35:45
一旦你写了DataStore ds = new DataStore();,任何spring初始化都不会在ds上发生。您必须在类Singleton中对其进行自动绑定,并使Singleton成为一个spring bean。出于同样的原因,您应该使dao成为ds,并在其中自动连接bean。如果你真的有很好的理由不这么做,你必须找到一个访问ApplicationContext的途径,并从中获取bean,但永远不要使用new创建它们(或者根本不使用spring ...)。
发布于 2014-07-18 21:10:48
public class Dumper {
public void dumpData() {
//stuff
}
}
public class DataStore {
@Autowired
Dumper dumper;
}现在,您应该创建Dao Bean,自动连接其中的数据存储
public class Singleton {
@Autowired
DataStore ds;
Dao dao;
getInst () {
dao = Dao(ds);
}
}现在确保您已经在配置文件中正确地定义了引用bean,为了避免初始化,problem.That意味着数据存储bean被定义为dumper作为其引用,同时还为dumper定义了单独的bean。
https://stackoverflow.com/questions/24820297
复制相似问题