我们正在将我们的遗留实现转移到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初始化模型时,我们可以这样做吗? lazy-init在这里可能不起作用,因为对象DAOImpl总是被非懒惰的bean访问
答案 0 :(得分:0)
首先,spring将对象定义为单例的方法是在singleton
(默认)bean范围内定义。
其次,lazy-init
应该有效。只是让DAO bean的初始化过程与使用它的过程不同。即在构造它时,不要初始化缓存 - 只有在调用它的方法时才会。