私はこのようなDaoの実装を持っています
public class EntityDao<T> {
private Class clazz;
private SessionFactory sessFactory;
public EntityDao(Class clazz, SessionFactory sessFactory) {
this.clazz = clazz;
this.sessFactory = sessFactory;
}
.... dao methods
}
特定のdaoを取得して保存するためのファクトリ
EntityBeanDaoFactory {
private HashMap<EntityDaoType, EntityDao> daoMap = new HashMap<EntityDaoType, EntityDao>();
// return dao from daoMap if exists a if not create it and put it in the map then return dao
public EntityDao createDao(EntityDaoType entityType) {
switch (entityType) {
case mySpecialDaoTYPE:
if (!daoMap.containsKey(entityType)) {
EntityDao<Type> mySpecialDao = new EntityDao(Type.class, sessFactory);
daoMap.put(entityType, mySpecialDao);
}
return daoMap.get(entityType);
}
}
今、私は @PreAuthorize("hasPermission()") で dao メソッドに注釈を付けたいと思っていますが、Spring はこの方法で作成された daos を認識しておらず、プロジェクト全体を一度にリファクタリングすることができないため、dao を作成しました。 aplicationContectxt.xml 内で注釈を使用する
<bean id="mySpecialDao" class="..EntityDao" >
<constructor-arg>
<value>myClass</value>
</constructor-arg>
<constructor-arg ref="sessionFactory" />
</bean>
工場内では、この特定のdaoをこのように作成するための動作が変更されています
if (!daoMap.containsKey(entityType)) {
EntityDao<Class> dao = (EntityDao<Class>) AppContext.getApplicationContext().getBean("mySpecialDao");
daoMap.put(entityType, dao);
}
春に私のDAOを認識させるより良い方法はありますか?つまり、手動で作成されたインスタンスをSpringに認識させる方法はありますか?