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
打赏下吧