Spring MVC 和 Application Context 多次刷新尝试
Posted
技术标签:
【中文标题】Spring MVC 和 Application Context 多次刷新尝试【英文标题】:Spring MVC and Application Context multiple refresh attempts 【发布时间】:2016-05-19 03:17:33 【问题描述】:这个概念是我们可以在没有 XML 文件的情况下创建一个 Spring 应用程序,所以请使用 java 配置文件指出一些解决方案
我正在创建一个示例 web mvc 应用程序作为概念证明,我遇到的问题是,一旦提交表单,我就无法再次使用该表单提交。它给出了这个错误
GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once
我可以看到我的问题出在哪里,但我似乎找不到解决方法
Controller.java
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.refresh 会在我每次访问 URL 时被调用。 我尝试将其放入构造函数中,但没有奏效。如果这是错误的,谁能帮我找到解决方案/更好的替代方案。
【问题讨论】:
请看这篇帖子***.com/questions/24720330/… 这不是测试代码而是实际控制器 【参考方案1】:这是一个两部分的答案。 当我们尝试在 RequestMapping 中刷新上下文时,我发现其中一部分包含问题。然而,这不是真正的解决方案。真正的解决方案是声明一个我仍然需要处理的 WebApplicationInitializer。
我离题了。
解决方案:
将 AnnotationConfigApplicationContext 替换为 AnnotationConfigWebApplicationContext 应该可以使上述代码正常工作。
但建议您花更多时间了解 WebApplicationInitializer 是如何长期实现的
【讨论】:
以上是关于Spring MVC 和 Application Context 多次刷新尝试的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Spring Boot 项目迁移到旧 Spring MVC 项目。面临的问题,如何在遗留 Spring MVC 项目中读取 application.properties 文件
spring boot mvc - 不支持内容类型'application/json;charset = UTF-8'
在我的(java spring mvc + mysql application,thymeleaf)中实现spring security之后,身份验证发生了一些奇怪的事情