尽管对于大多数场景,几乎所有的被BeanFactory治理的用户代码不需要知道BeanFactory,但是BeanFactory还是不得不实例化。这一步可以通过如下清楚的用户代码发生: InputStream is = new FileInputStream("beans.xml"); XmlBeanFactory factory = new XmlBeanFactory(is); 或者: ClassPathResource res = new ClassPathResource("beans.xml"); XmlBeanFactory factory = new XmlBeanFactory(res); 或者: ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext( new String[] {"applicationContext.xml", "applicationContext-part2.xml"}); // of course, an ApplicationContext is just a BeanFactory BeanFactory factory = (BeanFactory) appContext;
1.2.1.1.通过实例工厂方法创建bean 与使用静态工厂方法创建bean非常类似的是,使用一个实例工厂方法(非静态的),通过调用一个已存在bean(这个bean应该是工厂类型)的工厂方法来创建新的bean。 要使用这种机制,class属性必须保留为空的,而且factory-bean属性必须指定一个包含工厂方法的bean的name(¥¥)。而工厂方法本身仍然要通过factory-method属性设置。 下面是一个例子: <!-- The factory bean, which contains a method called createInstance -->