BeanFactory和ApplicationContext的区别(问题驱动思考)


前言

本文阅读需要约5分钟,从一个普遍的错误到分析BeanFactory和ApplicationContex的异同


一、几乎所有人都犯过的错误

相信几乎所有Spring初学者都犯过一个错误(包括笔者在内),在编写Controller类或者Service类时忘记写
@Controller或@Service时,tomcat启动必定会报错。

这时一顿操作:错误信息拷贝,面向百度或csdn编程,恍然大悟,原来自己忘记加这俩注解了。

可,这是为什么?为什么不加这两个注解tomcat启动就会报错呢?

且看文章娓娓道来......

二、解答

这两者都可作为IOC容器管理对象的生命周期,请看代码:

1.BeanFactory

// 加载xml配置文件
BeanFactory context = new ClassPathXmlApplicationContext("bean1.xml");
// 获取配置的对象
User user = context.getBean("user", User.class);

2.ApplicationContext

// 加载xml配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
// 获取配置创建的对象
User user = context.getBean("user", User.class);

之所以会出现tomcat启动报错的原因就在于:

第一步时:BeanFactoy是需要用到时才会去加载对象,而ApplicationContext会提前加载好对象(有点类似懒汉饿汉)。

我们在做WEB时使用ApplicationContext提请加载好资源,那么响应速度便会提高。

所以如果忘记写@Controller或者@Service,tomcat启动时ApplicationContext找不到类,肯定就报错了

3.关系区别

在这里插入图片描述

可以看到BeanFactory是Application的鸡肋(基类),那么ApplicationContext功能比BeanFactory更多更强大

BeanFactoy更偏向于Spring内部使用不推荐开发人员使用,ApplicationContext更适合开发人员使用

不忘初心,技术改变世界

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值