java - 如何在 spring mvc 中重新加载/重新创建 sessionFactory bean 而不刷新整个 web 应用程序上下文?

标签 java spring hibernate spring-mvc

在 Spring 与 hibernate 集成,我有以下要求。 我需要重新加载/重新创建/刷新/更新唯一的 sessionFactory bean。

但是在使用时

((ConfigurableApplicationContext)ApplicationContextProvider.getApplicationContext()).refresh();

它重新加载整个应用程序上下文(所有 bean)。

能否请任何人帮我根据某些条件(例如用户在 UI 级别选择/单击某个选项)仅重新加载一个 Bean

谢谢你..

最佳答案

这不是一个直接的答案,但我认为在应用程序上下文中重新加载一个新的 SessionFactory 而不重新加载使用它的其他 bean 将导致严重的问题。 SessionFactory 通常是一个单例 bean,因此仅在上下文刷新时才使用它注入(inject)到其他 bean 中。因此,即使您设法将新的 SessionFactory bean 放入应用程序上下文中,DAO 也不会知道该更改,甚至可能尝试使用封闭工厂...

如果您确实想刷新 SessionFactory bean,则必须:

  • 关闭旧bean
  • 创建一个新的
  • 小心地将其注入(inject)所有使用它的bean(通常是DAO)中,模仿spring在刷新时所做的事情
  • 并且所有应该是“原子”的,即在所有 Bean 准备就绪之前不应处理任何请求。

这是您的应用程序,但在我看来,所有这些都容易出错。至少一定要让维护者的评论红闪……

关于java - 如何在 spring mvc 中重新加载/重新创建 sessionFactory bean 而不刷新整个 web 应用程序上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24631745/

相关文章:

java - PDFBox:PdfTextStripper 中的不可见文本(不是剪辑路径或颜色问题)

java - 为什么 Java ServerSocket accept() 返回一个与 ServerSocket 具有相同端口的套​​接字?

java - Spring Web MVC 管理区域安全

java - 了解与 h2 数据库的连接

java - JPA - @PreRemove 方法行为

java - 使用 andengine GLES2 通过引用传递 Sprite 会导致空指针异常

java - 我可以创建 spring mvc 自定义验证注释而不链接到 validator 实现吗

spring - Spring中结合GET和POST请求方法

java - Spring mvc中如何管理Session

mysql - 如何为以下用例设计表格?