1
我有一個Spring MVC應用程序試圖利用豐富的域模型,與控制器類下面的映射:定製的bean的實例化邏輯
@RequestMapping(value = "/entity", method = RequestMethod.POST)
public String create(@Valid Entity entity, BindingResult result, ModelMap modelMap) {
if (entity== null) throw new IllegalArgumentException("An entity is required");
if (result.hasErrors()) {
modelMap.addAttribute("entity", entity);
return "entity/create";
}
entity.persist();
return "redirect:/entity/" + entity.getId();
}
這種方法被執行之前,Spring使用BeanUtils
到實例化新的Entity
並填充其字段。它使用這樣的:
...
ReflectionUtils.makeAccessible(ctor);
return ctor.newInstance(args);
這裏的問題:
我的實體是Spring管理豆。其原因是向他們注入DAO。我不使用new
,而是使用EntityFactory.createEntity()
。當他們從數據庫中檢索時,我有一個攔截器,它覆蓋了方法並將工廠掛接到該方法。
所以這裏最後一塊缺少的難題是如何強制Spring使用工廠而不是自己的BeanUtils反射方法?任何建議乾淨的解決方案?
非常感謝。