BeanFactory ApplicationContext 区别

BeanFactory ApplicationContext 区别

在这里插入图片描述

从容器接口来看

  1. 到底什么是 BeanFactory
    • 它是 ApplicationContext 的父接口
    • 它才是 Spring 的核心容器, 主要的 ApplicationContext 实现都【组合】了它的功能

组合 —>意味着BeanFactory是ApplicationContext的成员变量

  1. BeanFactory 能干点啥

    • 表面上只有 getBean
    • 实际上控制反转、基本的依赖注入、直至 Bean 的生命周期的各种功能, 都由它的实现类提供
  2. ApplicationContext 比 BeanFactory 多点啥

    • ApplicationContext 组合并扩展了 BeanFactory 的功能
    • 国际化、通配符方式获取一组 Resource 资源、整合 Environment 环境、事件发布与监听
    • 增加了一种代码之间解耦途径,事件解耦

从容器实现来看

DefaultListableBeanFactoryBeanFactory最主要的一个实现类

FileSystemXmlApplicationContext
ClassPathXmlApplicationContext
AnnotationConfigApplicationContext
AnnotationConfigServletWebServerApplicationContext

这四个是 Application 的常见实现类,最重要的还是下面的两个,和Web开发相关的就可以用最后一个

AnnotationConfigServletWebServerApplicationContext的配置类相对AnnotationConfigApplicationContext的配置类要麻烦一点,

ServletWebServerFactory方法主要就是 构建一个Tomcat服务器

我们知道,Spring的Web层面的技术,它的核心在于DispatcherServlet(将来浏览器发来的请求或者是PostMan发来的请求,最终都入口点就是DispatcherServlet前控制器),DispatcherServlet方法就是用来创建这个核心的Servlet(DispatcherServlet)。

但是光有tomcat内置服务器 和Servlet还是不够的,我们还需要将他们联系起来(将DispatcherServlet注册到Tomcat服务器上) 在注册的时候我们指定了一个 路径"/"它代表 所有请求的路径都先经过DispatcherServlet然后再由它去分发到相应的控制器中

    @Configuration
    publicclass WebConfig {
        @Bean
        public ServletWebServerFactory servletWebServerFactory(){
            return new TomcatServletWebServerFactory();
        }
        @Bean
        public DispatcherServlet dispatcherServlet() {
            return new DispatcherServlet();
        }
        @Bean
        public DispatcherServletRegistrationBean registrationBean(DispatcherServlet dispatcherServlet) {
            return new DispatcherServletRegistrationBean(dispatcherServlet, "/");
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_x_330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值