如何动态更改Spring JdbcTemplate DataSource?

时间:2013-08-16 11:14:00

标签: java spring spring-mvc jdbctemplate

我有一个配置文件,其中包含JDBC连接的默认设置。

应用程序运行后是否有任何选项可以编辑此默认连接详细信息?在创建所有bean之后(编辑控制器中的连接详细信息)。

情景:

  • 用户启动应用程序,并可以通过转到来编辑连接详细信息 本地主机:8080 / MyApp的/分贝/编辑
  • 填写连接详细信息并保存新的数据库详细信息

然后应该找到现有连接,更新连接详细信息并重新实例化bean。

1 个答案:

答案 0 :(得分:0)

您可以尝试从Spring Container删除bean并重新启动它们。

    Demo demo = getBean(context);

    ConfigurableListableBeanFactory configurableListableBeanFactory = context
            .getBeanFactory();

    BeanDefinitionRegistry beanDefinitionRegistry = (BeanDefinitionRegistry) configurableListableBeanFactory;
    // Removing the bean from container
    beanDefinitionRegistry.removeBeanDefinition("demo");

    // Trying to obtains bean again from container. This will throw a null     
    demo = getBean(context);
    //demo object will be null here

    // Creating and registering bean to the container      
    BeanDefinition beanDefinition = new RootBeanDefinition(Demo.class);
    beanDefinition.setAttribute("name", "name");

    beanDefinitionRegistry.registerBeanDefinition("demo", beanDefinition);
    context.refresh();

    //Obtaining from container again
    demo = getBean(context);