java Spring MVC和应用程序上下文多次刷新尝试
概念是我们可以创建一个spring应用程序,而不需要XML文件,因此请使用java配置文件指出一些解决方案
我正在创建一个示例web mvc应用程序,作为概念证明。我遇到了一个问题,即一旦提交了表单,就无法使用表单再次提交。它给出了这个错误
GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once
我知道我的问题在哪里,但我似乎找不到解决办法
控制器。爪哇
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
//@TODO hibernate broke validity
//@TODO disable submit until data is valid
@RequestMapping(value="form", method=RequestMethod.POST)
public String submitForm(@ModelAttribute @Valid Subscriber subscriber,BindingResult result, Model m) {
m.addAttribute("message", "Successfully saved person: " + subscriber.toString());
ctx.register(WebConfiguration.class);
//@TODO fix refresher only once issue
ctx.refresh();
SubscriberDao sao = ctx.getBean(SubscriberDao.class);
sao.savePerson(subscriber);
return "formPage";
}
如果你看这里,ctx。每次我转到URL时都会调用refresh。 我试着把它放在一个构造函数中,但没有成功。如果这是错误的,谁能帮我找到一个解决方案/更好的替代方案
# 1 楼答案
这是一个由两部分组成的答案。 我已经发现,当我们尝试在RequestMapping中刷新上下文时,问题的一个组成部分。然而,这不是真正的解决办法。真正的解决方案是声明一个我仍然需要处理的WebApplicationInitializer
我离题了
解决方案:
将AnnotationConfigApplicationContext替换为AnnotationConfigWebApplicationContext,这样可以使上述代码正常工作
但从长远来看,建议花更多的时间来理解WebApplicationInitializer是如何实现的