【发布时间】:2011-02-21 02:10:33
【问题描述】:
我有一个单例,它有一个注入弹簧的 Dao(简化如下):
public class MyService<T> implements Service<T> {
private final Map<String, T> objects;
private static MyService instance;
MyDao myDao;
public void set MyDao(MyDao myDao) {
this. myDao = myDao;
}
private MyService() {
this.objects = Collections.synchronizedMap(new HashMap<String, T>());
// start a background thread that runs for ever
}
public static synchronized MyService getInstance() {
if(instance == null) {
instance = new MyService();
}
return instance;
}
public void doSomething() {
myDao.persist(objects);
}
}
我的 spring 配置可能如下所示:
<bean id="service" class="MyService" factory-method="getInstance"/>
但这会在启动期间实例化 MyService。
是否有编程方式将 MyDao 的依赖注入到 MyService 中,但不让 spring 管理 MyService?
基本上我希望能够从我的代码中做到这一点:
MyService.getInstance().doSomething();
让 spring 为我注入 MyDao。
【问题讨论】:
标签: spring dependency-injection singleton