前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring中BeanFactory和ApplicationContext的区别

Spring中BeanFactory和ApplicationContext的区别

作者头像
春哥大魔王
发布2019-07-31 10:57:35
2.3K0
发布2019-07-31 10:57:35
举报

Spring Bean

先从SpringBean说起,Spring Beans是被Spring容器管理的Java对象,比如:

代码语言:javascript
复制
public class HelloWorld {
   private String message;
   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage(){
      System.out.println("My Message : " + message);
   }
}

我们一般通过Application.xml配置Spring Bean元数据。

代码语言:javascript
复制
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
   <bean id = "helloWorld" class = "com.zoltanraffai.HelloWorld">
      <property name = "message" value = "Hello World!"/>
   </bean>
</beans>

Spring Bean被Spring容器管理之后,可以在程序中获取使用它了。

BeanFactory

BeanFactory是Spring容器的基础接口,提供了基础的容器访问能力。

BeanFactory提供懒加载方式,只有通过getBean方法调用获取Bean才会进行实例化。

常用的是加载XMLBeanFactory:

代码语言:javascript
复制
public class HelloWorldApp{
   public static void main(String[] args) {
      XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("beans.xml"));
      HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
      obj.getMessage();
   }
}

ApplicationContext

ApplicationContext继承自BeanFactory接口,ApplicationContext包含了BeanFactory中所有的功能。

具有自己独特的特性:

  • Bean instantiation/wiriting
  • Bean实例化/串联
  • 自动BeanPostProcessor注册
  • 自动BeanFactoryPostProcessor注册
  • 方便的MessageSource访问
  • ApplicationEvent发布

ApplicationContext采用的是预加载,每个Bean都在ApplicationContext启动后实例化。

代码语言:javascript
复制
public class HelloWorldApp{
   public static void main(String[] args) {
      ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
   }
}

后记

ApplicationContext包含了BeanFactory所有特性,通常推荐使用前者,但是对于性能有要求的场景可以考虑使用更轻量级的BeanFactory。大多数企业应用中Application是你的首选。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Bean
  • BeanFactory
  • ApplicationContext
  • 后记
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档