背景:项目与外围系统通过webservice交换数据,webservice的url,用户名,密码可能会在项目部署后发生改变,但服务 器不能随便重启。
需求:在不重启服务器的前提下,将更改后的值设置到spring 管理对应的bean中,影响范围越小越好。
解决:1. 把承载webservice通信条件的bean使用xml配置文件方式+注解方式。;
2. 使用dom4j获取xml配置文件中bean改变后的属性值
3. 利用反射将获取的新值设置到原来的bean中
4. 调用spring AutowireCapableBeanFactory 的方法将设置新值得bean保存起来。
代码:
1. bean xml配置文件:
<bean id="GpmsWebServiceRef" class="com.gpms.module.eqm.webService.xfire.GpmsWebServiceRef"> <property name="erpUrl" value="http://1.2.2.2:8080/services/gpmsWebService"></property> <property name="authen" value="1"></property> <property name="userName" value="test"></property> <property name="password" valu