java - Spring MVC 和应用程序上下文多次刷新尝试

标签 java hibernate spring-mvc

这个概念是我们可以在没有 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";
}

如果你看这里,每次我访问该 URL 时都会调用 ctx.refresh。 我尝试将其放入构造函数中,但这不起作用。如果这是错误的,任何人都可以帮助我找到解决方案/更好的替代方案。

最佳答案

这是一个由两部分组成的答案。 当我们尝试刷新 RequestMapping 中的上下文时,我发现了一个包含问题的部分。然而,这不是真正的解决方案。真正的解决方案是声明一个我仍然需要处理的 WebApplicationInitializer。

我离题了。

解决方案:

将 AnnotationConfigApplicationContext 替换为 AnnotationConfigWebApplicationContext,这样上面的代码就可以正常工作。

但建议花更多时间并了解 WebApplicationInitializer 从长远来看是如何实现的

关于java - Spring MVC 和应用程序上下文多次刷新尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313368/

相关文章:

sql - 删除域对象时获取 'Referential integrity constraint violation'

java - Hibernate:如何根据作为关联映射一部分的外键列选择单个项目?

hibernate - 覆盖 JPA/Hibernate 中的默认删除()/DELETE

java - Spring MVC 将逗号分隔列表绑定(bind)到多选

java - 带有一些输入框的页面会发布到操作,我在检索表单值时有哪些选项?

Java 性能 64 位

java - 如何使用java获取下个月的前三个日期

java - 如何通过spring boot在启动时配置 'dispatcherServlet'负载?

java - 避免在数组列表中插入重复项

java - Spring调度问题: org. springframework.beans.factory.BeanCreationException: