springBoot,mybatis流程

springboot

查看启动时就注册了那些bean

@Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {

        return args -> {

            System.out.println("Let's inspect the beans provided by Spring Boot:");

            String[] beanNames = ctx.getBeanDefinitionNames();
            Arrays.sort(beanNames);
            for (String beanName : beanNames) {
                System.out.println(beanName);
            }

        };
    }

springMVC

流程图

在这里插入图片描述

运行原理


1. 客户端请求提交到DispatcherServlet

2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller

3. DispatcherServlet将请求提交到Controller

4. Controller调用业务逻辑处理后,返回ModelAndView

5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图

6. 视图负责将结果显示到客户端

DispatcherServlet

springBoot是如何配置了DispatcherServlet

DispatcherServlet传统配置

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value> 
    </init-param>
</servlet> 
<servlet-mapping>
     <servlet-name>dispatcherServlet</servlet-name>
     <url-pattern>*.do</url-pattern> 
</servlet-mapping>

DispatcherServlet作为前置控制器,通常配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

DispatcherServlet SpringBoot自动配置

DispatcherServlet在Spring Boot中的自动配置是通过DispatcherServletAutoConfiguration类来完成的。

debug

断点运行springMVC
1.在controller打断点
2.查看debug窗口找到,DispatcherServlet
在这里插入图片描述
3.单击该行,跳转到对应类,的对应的位置。并在这个地方打断点
在这里插入图片描述
4.重新请求
来到了DispatcherServlet的doDispatch方法,并在方法的484行执行过后,获取到了对应的Controller类,以及对应的方法
在这里插入图片描述

可参考的文章

链接:https://www.jianshu.com/p/91a2d0a1e45a

mybatis

main方法示例代码

blog是一个简单的pojo
mybatis-config.xml是有数据库的IP,端口,驱动,库名称,用户名,密码,以及mapper.xml位置等

在这里插入图片描述

整体架构

在这里插入图片描述

基础支持层(总结:没啥意思有兴趣可以研究某个点)

反射

是Java原生反射的封装,缓存了类的元数据,提高了反射操作的性能
大白话:就是将利用反射获取对象的方法属性放入一个map中
Reflector
在这里插入图片描述

类型转换

就是将数据库的数据类型转换成对应的Java类型

日志

能够集成三方日志框架

资源加载

类加载器封装,确定类加载器的使用顺序
加载类文件,其他文件的功能
说白了就是能够读取文件

解析器

就是解析xml用的,动态sql语句的占位符提供支持

数据源

能集成三方数据源,也有自己的,就是用来连接数据库

事务管理

一般都交给Spring,cglb动态代理

缓存

一级缓存,二级缓存
只是单机

binding

将mapper接口与mapper.xml关联。
注意:使用package+Mapper+method全限名作为key,去xml内寻找唯一sql来执行的,所以Mybatis的mapper接口禁止方法重载​​​​​​​

核心处理层

配置解析

就是将xml封装成Java对象,方便使用
在这里插入图片描述

sql解析

在这里插入图片描述

sql执行

在这里插入图片描述
在这里插入图片描述

插件(应该是最有意思的地方)

可参考博客:
https://www.cnblogs.com/chenpi/p/10498921.html
http://www.mybatis.cn/726.html
org.apache.ibatis.plugin.Interceptor
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接口层

sqlsession接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值