0

従来の実装を Spring IBatis モデルに移行しています。Springモデルを使用して、これらのオブジェクトをよりクリーンな方法でモデル化することに行き詰まっています

2つのクラスがあるとしましょう[どちらもシングルトンです]

DAOImplは DAOInterface を実装します

CacheDAOImplは DAOInterfaceを実装します

CacheDAOImplでのオブジェクトの初期化を示すコード スニペット

.....

private static CacheDAOImpl ourInstance = new CacheDAOImpl();

public static CacheDAOImpl  getInstance()
{
   return ourInstance;
}

private CacheDAOImpl()
{
 // intialiazes all caches
}

CacheDAOImplオブジェクトの使用法を示すDAOImplのコード スニペット

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

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

上記の実装では、DAOImpl でメソッドが呼び出されたときにのみキャッシュが初期化されますが、初期化の Spring モデルでは、これを行うことができますか?. オブジェクト DAOImpl は常に非遅延 Bean によってアクセスされるため、ここでは lazy-init が機能しない場合があります。

4

1 に答える 1

0

まず、オブジェクトをシングルトンとして定義するSpringの方法は、singleton(デフォルトの)Beanスコープで定義することです。

第二に、lazy-init動作するはずです。DAO Bean を初期化するプロセスと、それを使用するプロセスを異なるものにするだけです。つまり、構築時にキャッシュを初期化しないでください。メソッドが呼び出されたときのみです。

于 2010-01-24T09:37:26.193 に答える