Lan*_*ali 6 singleton spring dependency-injection
我有一个弹簧注入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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的spring配置可能如下所示:
<bean id="service" class="MyService" factory-method="getInstance"/>
Run Code Online (Sandbox Code Playgroud)
但这将在启动期间实例化MyService.
是否有一种编程方式将MyDao依赖注入MyService,但没有spring管理MyService?
基本上我希望能够从我的代码中执行此操作:
MyService.getInstance().doSomething();
Run Code Online (Sandbox Code Playgroud)
春天为我注入了MyDao.
如果你想要一个单例,为什么不在 Spring 配置中定义一个类,它会自动成为一个单例(默认情况下)。
为了避免在启动时初始化,您是否看过 Spring延迟初始化?基本上你需要:
lazy-init="true"
Run Code Online (Sandbox Code Playgroud)
在你的bean定义中。
归档时间: |
|
查看次数: |
7314 次 |
最近记录: |