当前位置: 首页 > Java > 正文

spring动态加载bean属性

关键字:
1 星2 星3 星4 星5 星 (暂无评分)
Loading ... Loading ...
baidu_share

spring初始化的bean,能够修改属性,并让修改后的bean能立即被其引用bean感知。

应用场景:spring初始化的bean中含有weight属性,通过配置服务,来变更weight属性值,来自动切换到该机器中流量。

先获取到该bean,然后再修改bean属性,再注册到spring 容器中。

                BeanDefinition bd = ac.getBeanFactory().getBeanDefinition("providerConfig");  
			MutablePropertyValues pv =  bd.getPropertyValues(); 
			Random random=new Random();
			int weight=random.nextInt(100);
	        if(pv.contains("weight")) {  
	            pv.addPropertyValue("weight",String.valueOf(weight));  
	            System.out.println("SpringTest weight="+weight);
 
	        }  
	        DefaultListableBeanFactory fty = (DefaultListableBeanFactory) ac.getAutowireCapableBeanFactory() ; 
	        fty.registerBeanDefinition("providerConfig", bd);

其他对象获取该bean时要采用容器中获取。

public class ApplicationContextUtil {
	private static volatile ApplicationContext ctx;
 
	public static ApplicationContext getCtx() {
		return ctx;
	}
 
	public static void setCtx(ApplicationContext applicationContext) {
		ctx = applicationContext;
	}
 
	public static <T> T getBean(Class<T> clazz){
		return ctx.getBean(clazz);
	}
}

本文固定链接: http://www.chepoo.com/spring-dynamically-loaded-bean-property.html | IT技术精华网

spring动态加载bean属性:等您坐沙发呢!

发表评论