0

我们正在将我们的遗留实现迁移到 Spring IBatis 模型。我有点卡在使用 Spring 模型以更清洁的方式对这些对象进行建模

假设我有两个班级[他们都是单身]

DAOImpl 实现DAOInterface

CacheDAOImpl实现DAOInterface

显示CacheDAOImpl中的对象初始化的代码片段

.....

private static CacheDAOImpl ourInstance = new CacheDAOImpl();

public static CacheDAOImpl  getInstance()
{
   return ourInstance;
}

private CacheDAOImpl()
{
 // intialiazes all caches
}

来自DAOImpl的代码片段显示了CacheDAOImpl对象的使用情况

private DAO getCacheDAO()
{
   return CacheDAOImpl.getInstance();
}

@Override
public SomeObject lookUpId()
{
  return getCacheDAO().lookUpId();
}

在上面的实现中,只有在 DAOImpl 中调用方法时才会初始化缓存,而使用 Spring 初始化模型,我们可以这样做吗?惰性初始化在这里可能不起作用,因为对象 DAOImpl 将始终由非惰性 bean 访问

4

1 回答 1

0

首先,spring 将对象定义为单例的方式是在singleton(默认的)bean 范围内定义。

第二,lazy-init应该工作。只需使初始化 DAO bean 的过程与使用它的过程不同。即当它被构造时,不要初始化缓存——只有当它的方法被调用时。

于 2010-01-24T09:37:26.193 回答