2010-01-24 38 views
0

我们正在将我们的传统实现移至Spring IBatis模型。我在使用Spring模型使用Spring IBatis对缓存进行延迟初始化

可以说我有两个班[他们两人都是]

DAOImpl实现DAOInterface更清洁的方式将这些对象建模样的卡

CacheDAOImpl implements DAOInterface

Code snip从DAOImpl表示CacheDAOImpl对象使用

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

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

在上述实现的缓存宠物表示对象初始化CacheDAOImpl

..... 

private static CacheDAOImpl ourInstance = new CacheDAOImpl(); 

public static CacheDAOImpl getInstance() 
{ 
    return ourInstance; 
} 

private CacheDAOImpl() 
{ 
// intialiazes all caches 
} 

代码段仅当方法在DAOImpl被调用初始化而使用Spring初始化模型,我们可以做到这一点吗? lazy-init可能无法在这里工作,因为对象DAOImpl将永远被非懒惰的bean访问

回答

0

首先,spring定义对象为单例的方式是在singleton(这是默认的)bean作用域中定义。

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

+0

@Bozho谢谢。它将永远被非懒惰的bean访问。为了清晰起见,我将编辑帖子。 – Chandra 2010-01-24 09:51:43