感悟

最近一直在做源码研读和翻译:确实收获了很多;源码的研读是枯燥痛苦的,但取得阶段性成果的时候是快乐的;

今天我要说的是web服务器,到springmvc框架以及spring框架+mybatis框架

 

tomcat接收到socket[endpoint]请求后寻找mapper处理->找到相应的container处理【engine->host->context->wrapper】

网络请求的核心是socket;

大白话说:[如果你不理解tomcat核心实现]

1tomcat启动时加载所有组件
并且该组件 端到端的核心就是 socket ---mapper --- servlet
根据controller等注解建立mapper信息
socket请求根据url->mapper找到servlet的方法,执行请求
返回结果


springmvc如何整合tomcat,tomcat定义了一套网络资源处理标准,servlet,spring继承该标准实现了DispatcherServlet

当从tomcat进入spring-mvc后就由spring自己解析了,也就是常见的面试题,mvc的核心处理[适配器处理器 modelAndView等等]

如此springmvc就连接上了tomcat



2再来看spring-mvc怎么连接spring

1springmvc是无缝连接spring
在结合tomcat时候会把整套容器注入给tomcat
web.xml中ContextLoaderListener就是干这个事情的;他会将springcontext[spring]注入到servletContext[tomcat]
注意spring 容器和tomcat容器的不同 spring容器注重的是bean的控制反转,tomcat容器注重的是提供url的黑箱处理返回结果;


2再看spring容器,
spring的核心是IOC启动
主要就是加载相关bd 扫描 处理扩展点[BFPP[BDRPP],,BPP],单例bean创建 ioc处理
核心就是refresh 

3那么mybatis如何整合spring
先说 mybatis几个核心 的configuration sqlsessionFactoryBean ,MapperScannerRegistrar @MapperScan
mybatis借助的正是spring的扩展点ImportBeanDefinitionRegistrar实现了对接口的封装处理
在创建接口代理对象的时候赋值session[也是个代理,真正实现还是DefaultsqlSession];
当session拿着原生接口的sql去执行的时候就完成了数据库查询
至于如果查session下面交给了【executor 和几大handler以及额外的插件处理】

 

 

综上所述,我们看看现阶段开发的整个流程

tomcat启动加载spring,创建socket到servlet的映射,spring在启动会扫描所有的bean包含myabtis,并且完成iDI注入,mybatis通过过mapperscan结合了spring IBDR注入到spring容器从而注入给tomcat

用户发起socket请求通过tomcat的mapper找到servlet,servlet通过自己的mapper找到controller,contoller调用service调用dao代理对象,代理对象执行的时候通过 mapperProxy.invoker执行【executor->【statementhandler->...->resultHandler】】

 

 

接下来从源码涉及的类概述启动解析以及请求过程

太晚,待写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值