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接口