spring动态的注入bean

阅读:303
作者:majingjing
发布:2016-07-12 17:30:14

spring动态的注入bean,一般框架在扩展的时候需要使用到该方法


public static void main(String[] args) throws Exception {
	ApplicationContext ctx = new ClassPathXmlApplicationContext(
			"applicationContext-test.xml");

	Object obj = ctx.getBean("commonApi");

	DefaultListableBeanFactory acf = (DefaultListableBeanFactory) ctx
			.getAutowireCapableBeanFactory();
	BeanDefinitionBuilder dataSourceBuider = BeanDefinitionBuilder
			.genericBeanDefinition(HashMap.class);

	// 再得到要加入的新bean所在的工厂.
	// 因为新的bean可能是在一个文件中描述的.
	// 所以可以通过这种方法来得到,
	// 当然如果有其他方式也可以,
	// 这里得到这个factory是为了方便下面得到它的定义:definition.
	acf.registerBeanDefinition("SceDemoApi",
			dataSourceBuider.getBeanDefinition());
	// 再注入新的bean.
	// 这里要传入一个beanId就是我们以后要通过getBean(beanId)来得到对象中的beanId.
	// 另外还要一个该bean的definition.通过前面的factory中获得.
	// 这样就动态注入了.
	Object obj2 = ctx.getBean("SceDemoApi");
	System.out.println(obj2.getClass().getName());
}


以上示例可以参考下,但是暂时还未发现如何注入一个class类型的bean


参考:

 http://www.tuicool.com/articles/IbEBji

 http://blog.sina.com.cn/s/blog_5f54f0be0100n00x.html