创建beanfactory对象有哪些不同的方法?

时间:2013-03-13 04:57:39

标签: spring java-ee

1. BeanFactory fac=new ClassPathXmlApplicationContext("Spring-Config.xml"); 

2. Resource res=new Classpathresource("Spring-Config.xml");
    BeanFactory fac=new XmlBeanFactory(res);

(我发现只有第二种类型我可以指定一个父Configration文件供使用     

3. ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Config.xml");

我有三种加载beanfactory的方法,我想知道它们之间有什么区别。 如果可能,如何在所有这些方法中定义父配置文件?

3 个答案:

答案 0 :(得分:2)

ApplicationContext派生自BeanFactory接口,因此它具有BeanFactory所具有的所有功能,并且还具有额外的功能,下面是Spring官方网站:      MessageSource,提供对i18n风格的消息的访问。     访问资源,例如URL和文件。     事件传播到实现ApplicationListener接口的bean。     加载多个(分层)上下文,允许每个上下文集中在一个特定图层上,例如应用程序的Web图层。

正如你所说的一些代码使用BeanFactory而有些使用ApplicationContext,实际上它没有什么不同,但有一点,因为ApplicationContext的额外功能,它会更加繁重,可以使用事务和aop < / strong>,在容器环境中使用它会非常好,例如Tomcat等。 你可以在这里找到更多,尤其是第3.8.1节。 BeanFactory或ApplicationContext?http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#context-introduction-ctx-vs-beanfactory

答案 1 :(得分:1)

BeanFactory层次结构显示在图像here中。

请注意,这些是接口,接口可以有很多 - 很多 - 实现,因此有相应的不同方式来获取bean。

以下是BeanFactory Vs ApplicationContext

的差异

答案 2 :(得分:0)

BeanFactory ApplicationContext 都是从你的spring IOC 容器中获取bean的方法,但仍有一些区别。

BeanFactory 是实例化,配置和管理多个bean的实际容器。这些bean通常彼此协作,因此它们之间具有依赖关系。这些依赖关系反映在BeanFactory使用的配置数据中。

BeanFactory ApplicationContext 都是Java接口,ApplicationContext扩展了BeanFactory。它们都是使用XML配置文件的配置。简而言之,BeanFactory提供基本的控制反转( IoC )和依赖注入( DI )功能,而ApplicationContext提供高级功能。

BeanFactory由接口“ org.springframework.beans.factory ”表示BeanFactory,其中有多个实现。

ClassPathResource resource= new ClassPathResource("appConfig.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);

<强>差分

  1. BeanFactory 在调用 getBean()方法时实例化bean,而ApplicationContext在启动容器时实例化Singleton bean,它不等待getBean()被称为。

  2. BeanFactory 不支持国际化,但 ApplicationContext 为其提供支持。

  3. BeanFactory ApplicationContext 之间的另一个区别是能够将事件发布到注册为侦听器的bean。

  4. BeanFactory 界面的一个流行实现是 XMLBeanFactory ,而 ApplicationContext 界面的一个流行实现是的ClassPathXmlApplicationContext

  5. 如果您使用自动布线并使用 BeanFactory ,则需要使用API​​注册 AutoWiredBeanPostProcessor ,如果您使用的是,则可以使用XML进行配置ApplicationContext的即可。总结 BeanFactory 可用于测试和非生产用途,但 ApplicationContext 是功能更丰富的容器实现,应该优于 BeanFactory

  6. BeanFactory 默认支持延迟加载, ApplicationContext 默认支持积极加载。< / p>