背景: 现有2个配置文件  applicationContext.xml  和  database.properties  
       database.properties   中设置了数据库 连接的参数。 里面的值被 Spring 配置文件 applicationContext.xml 引用。需求:前台修改  数据库连接参数。
      Spring 动态的重新加载 数据库连接参数,动态的切换数据库。
 
修改 database.properties 文件很简单,但是让 Spring 去重新加载配置文件,怎么做呢?? 

解决方案 »

  1.   

    你说的应该是WEB应用吧 
    Spring默认的bean的scope是单例的 所以你配置的数据源也是单例的,比如你是这样配置的: 
    Java代码  
    <bean id="dataSource" class="com.ykxd.context.ExBasicDataSource"  
            destroy-method="close">  
            <property name="driverClassName"  
                value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />  
            <property name="url"  
                value="jdbc:sqlserver://192.168.1.26;databaseName=aa" />  
            <property name="username" value="ykxdhr" />  
            <property name="password"  
                value="123" />  
            <property name="maxActive" value="100" />  
            <property name="validationQuery" value="select 1" />  
        </bean>  
        <bean id="jdbcTemplate"  
            class="org.springframework.jdbc.core.JdbcTemplate">  
            <constructor-arg>  
                <ref local="dataSource" />  
            </constructor-arg>  
        </bean>  如果想在运行时修改 就直接获取dataSource这个bean修改连接属性就行了,比如: 
    Java代码  
    WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);  
    BasicDataSource ds = (BasicDataSource) applicationContext.getBean("dataSource");  
    ds.setUrl("jdbc:sqlserver://192.168.1.26;databaseName=bb");  
            ds.setPassword("1111");