在使用hibernate集成的spring中,我有以下要求。 我需要重新加载/重新创建/刷新/更新唯一的sessionFactory bean。
但是在使用
时 ((ConfigurableApplicationContext)ApplicationContextProvider.getApplicationContext()).refresh();
重新加载整个应用程序上下文(所有bean)。
请问任何人可以帮我根据某些条件重新加载一个单一的bean(比如用户选择/点击UI级别的某个选项)
谢谢..
答案 0 :(得分:1)
这不是一个直接的答案,但我认为在应用程序上下文中重新加载新的SessionFactory
而不重新加载使用它的其他bean 将导致严重的问题。 SessionFactory
通常是一个单独的bean,因此仅在上下文刷新时使用它注入其他bean。因此,即使您设法在应用程序上下文中放置一个新的SessionFactory
bean,DAO也不会知道更改,甚至可以尝试使用已关闭的工厂......
如果你真的想刷新SessionFactory
bean,你必须:
这是你的应用程序,但所有看起来都容易出错。至少一定要让维护者的红色闪烁评论......
答案 1 :(得分:0)
DefaultListableBeanFactory defaultListableBeanFactory =(DefaultListableBeanFactory) xmlWebApplicationContext.getBeanFactory();
BeanDefinition beanDefinition = defaultListableBeanFactory.getBeanDefinition("pooledConnectionFactory");
beanDefinition.setBeanClassName(PooledConnectionFactory.class.getName());
defaultListableBeanFactory.registerBeanDefinition( "pooledConnectionFactory", beanDefinition);