赞
踩
利用spring可以实现bean注入的热插拔。
先看xml的配置:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
上面代码中HelloServiceImpl会打印hello,WelcomeServiceImpl会打印welcome。
helloService默认会注入的是helloServiceTarget,利用swapper bean 在程序运行时将注入引用的修改为welcomeServiceTarget。
测试用例如下:
public void testSwapper() {
/*
* 实现了动态将helloservice实现切换到welcomeservice实现
*/
String[] paths = {"applicationContext-hotswapper.xml"};
ApplicationContext context = new ClassPathXmlApplicationContext(paths);
HotSwappableTargetSource swapper = (HotSwappableTargetSource) context.getBean("swapper");
IHelloService service = (IHelloService) context.getBean("helloService");
// 第一次输出
service.sayHello();
//获取Welcome实现
WelcomeServiceImpl welcomeTarget = (WelcomeServiceImpl) context.getBean("welcomeServiceTarget");
//切换为welcome实现
swapper.swap(welcomeTarget);
// 第二次输出
service.sayHello();
}
上面代码会输出:
hello
welcome
验证了程序在运行中将service的实现由helloserviceImpl切换到welcomeserviceimpl
posted on 2008-06-07 20:56 flyoo 阅读(2319) 评论(1) 编辑 收藏
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。