我有使用休眠注释类并使用 DAO 服务层的 wicket aspectj 应用程序。
我开发了一个不在应用程序上下文中运行的更新任务。因此,我创建了一个 main 方法并将上下文加载为全局变量。
public static void main(String[] args) throws Exception
{
context = new ClassPathXmlApplicationContext(LOCATIONS);
XS2RAWebApp webApp = new XS2RAWebApp() {
@Override
public void init() {
getComponentInstantiationListeners().add(new SpringComponentInjector(this, context,true));
}
};
ThreadContext.setApplication(webApp);
ResponseUpdateTask updatetask = new ResponseUpdateTask();
updatetask.run();
}
如您所见,SpringComponentInjector 提供了一个 springcomponent 注入器。
在这个更新任务中,我想用休眠保存一些数据。
我有 Hibernate 实体,在这个实体中我有对我的服务 DAO 的引用。
@MappedSuperclass()
public abstract class Entiteit {
private static final Logger log = LoggerFactory.getLogger(Entiteit.class);
@SpringBean()
@Transient
private transient DataAccessHelper daoHelper;
...
public DataAccessHelper getDaoHelper() {
if (daoHelper== null) {
Injector.get().inject(daoHelper);
}
return daoHelper;
}
}
我尝试过的事情
- 只需使用 Mockapplication 并添加新的新 SpringComponentInjector(this, context,true),这会导致异常告诉我对应用程序进行初始化 (Allication.init())
- 试错解决方案
我知道我尝试过的似乎并不多,但我现在真的没有选择:S