java容器与spring容器_Spring框架与Springmvc框架容器详解

本帖最后由 长沙-小知姐姐 于 2019-2-25 14:20 编辑

spring框架与Springmvc框架概述

现在做为java开发的程序员,我相信基本上每个人都听说过Spring框架,而SpringMVC框架也逐渐的替代了原来的一些MVC框架,成为了Web层框架的佼佼者,但是SpringMVC框架其实本身也是Spring 框架的一个后续产品,这两个框架在结合到一起使用的时候Spring会有自己的IOC容器,而Springmvc也会有自己的ioc容器,两个框架一起使用的时候会有一些什么样的问题,或者两个框架的容器直接是一种什么样的关系,今天我们一起来讨论一下

spring框架与Springmvc框架整合使用的细节

Springmvc框架的基本使用

在理解spring框架与Springmvc框架一起使用时的两个容器关系之前,我们先对SpringMVC框架的使用步骤做一个简单介绍,以下是SpringMVC在使用的时候的基本代码

1. 在web项目的web.xml文件中配置Springmvc前端控制器

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

1.png (423.14 KB, 下载次数: 6)

2019-2-25 11:54 上传

2. 在项目中创建springmvc的配置文件

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

屏幕快照 2019-02-25 下午2.12.52.png (72.92 KB, 下载次数: 3)

2019-2-25 14:13 上传

3. 当做了前面两个配置之后就能直接在项目中创建Controller类和方法去接收请求

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

3.png (219.45 KB, 下载次数: 6)

2019-2-25 11:54 上传

Springmvc的基本执行过程

当我们做了上面的一些事情之后,服务器在启动的时候就会去创建Springmvc的前端控制器(DispatcherServlet),这个Servlet一创建就会帮助我们去加载Springmvc的配置文件,从而初始化Springmvc的容器,创建所有的Controller。以后发送请求的时候,执行的过程会经过Springmvc的各个组件,大致流程如下图

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

屏幕快照 2019-02-25 下午2.14.25.png (129.7 KB, 下载次数: 6)

2019-2-25 14:14 上传

spring框架与Springmvc框架整合使用

1. spring框架与Springmvc框架整合使用的思路

当我们在实际案例中去使用SpringMVC的时候由于我们需要在Controller中注入Service,所以我们必须要保证Controller对象创建之前Service对象要创建,而我们都知道Service最终都会交给Spring去管理,所以Spring的容器应该要先于Springmvc的容器创建才行

2.具体代码实现

代码实现很简单,想要web项目在加载Springmvc的配置之前先加载Spring的配置,只需要在web.xml文件中配置一下Spring的监听器和配置文件位置就可以

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

11.png (198.78 KB, 下载次数: 3)

2019-2-25 14:03 上传

spring框架与Springmvc框架一起使用后两个容器的关系

spring框架与Springmvc框架一起使用后Spring会有Spring的容器,在Spring容器中会创建Service,Dao层的对象,当然也会有SpringMVC的容器,SpringMVC容器会创建Controller对象,那么当我们去发送请求到Controller中去的时候,Controller中会注入Service对象,SpringMVC容器中的Controller对象是如何去注入Spring容器中的service对象的,相信部分刚接触SpringMVC框架的学者会在这个地方有疑问,那么接下来我们就一起去跟着Spring和SpringMVC源码一起来揭秘一下这个问题:

Spring容器加载

首先我们都知道,服务器一启动会去去执行Spring监听器中的代码加载Spring配置文件初始化容器,我们先去看看这一部分Spring是如何去完成的。

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

12.png (609.19 KB, 下载次数: 3)

2019-2-25 14:03 上传

通过这一部分源码我们发现,服务器已启动,listener中确实会帮我们去创建Spring容器,但是他还会做一件事情,就是将容器保存到ServletContext域对象中

SpringMVC容器加载

从Springmvc源代码中可以看到SpringMVC容器初始化的过程如下图:

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

13.png (649.5 KB, 下载次数: 15)

2019-2-25 14:04 上传

SpringMVC的容器在初始化的时候,会把原来已经保存在ServletContext中的Spring容器设置成SpringMVC的父容器,也就是说Spring容器和SpringMVC容器直接是一种逻辑上的父子关系,SpringMVC容器是子容器,Spring容器是父容器,所以在SpringMVC容器中的Controller能注入Spring容器中的service对象

总结

通过前面的分析,这样我们在清楚了spring和springMVC的父子容器关系;所以在项目中当我们同时去使用Spring框架和Springmvc框架的时候,Springmvc中的Controller能够访问到Springmvc父容器(Spring容器)中的对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值