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