在 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/