- 博客(16)
- 收藏
- 关注
原创 SpringBoot初始化过程源码解析(八)服务器启动
onRefresh为自定义类提供了一个扩展接口,同时也创建了web服务器(如果有的话)大致流程:
2020-03-11 18:52:46 242
原创 SpringBoot初始化过程源码解析(七)bean实例化细节
在讲完了大致流程之后,我们深入到具体细节再看一下bean是如何被创建的:接着来这里: protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args) throws BeanCreationException { //...
2020-03-08 21:16:07 765
原创 SpringBoot初始化过程源码解析(六)bean实例化
直接来到bean实例化的流程:只对单例非懒加载的bean进行实例化检查是否已经创建过:先创建bean的依赖(这个似乎很少看到有人使用),然后实例化bean这用一个集合来保存已经创建过的bean:实例化一个bean的大致流程就是这样。...
2020-03-06 19:25:40 684
原创 SpringBoot初始化过程源码解析(四)ComponentScan的启动调用解析
接着上次的内容。在配置类解析器中将根据配置类的注释信息进行解析,首先拿到所有扫描包中标注了@component、@controller、@configuration的类(这里都是自己定义的),然后进行了解析(递归)。下面是一个包扫描的过程:这里我的类(配置了对于过期的session的策略)没有其他注解,只是实现了一个接口:这里用递归的方式把类的所有接口中实现并且标注了@bean的方法添加...
2020-03-02 18:46:18 481
原创 SpringBoot初始化过程源码解析(三)
先把refresh流程的源码附上:public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); ...
2020-03-01 19:10:07 224
原创 SpringBoot初始化过程源码解析(二)
接着上一节的内容,对于某几个重要的点细化一下,首先是创建容器。先加载默认的字节码文件,然后进行实例化:所以最终用无参构造器,初始化了reader和scanner组件,reader是用来注册bean的,scanner是用来扫描bean的接下来prepareContext主要做了一下和监听器初始化器相关的准备:接下来来到refresh部分,这部分内容量有点大,下一节再写。。...
2020-02-29 18:50:02 229
原创 SpringBoot初始化过程源码解析(一)
springboot的初始化过程可以看做是spring的升级版,因为里面具有自动配置。首先打个断点进入debug查看一下流程:首先看一下创建实例的过程:得到监听器和初始化器,这两个比较重要:WebApplicationType:监听器和初始化器从所有类路径下的META-INF/spring.factories文件夹中寻找:然后再进入run函数看一下,这里两个重点是创建容器,是刷...
2020-02-28 17:39:19 434
原创 SpringBoot2.x前端控制器源码详解(五)拦截器执行流程
看一下拦截器的大致处理流程首先拿到所有的拦截器,这里面有一个我自己定义的拦截器。任意一个拦截器不放行,所有已经放行的拦截器都会直接执行其afterCompletion方法。...
2020-02-26 16:13:28 287 1
原创 使用MybatisPlus实现多表联查
JavaBean代码Department 类package com.refactor.demo.entities;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableName;import lombok.Data;import l...
2020-02-23 21:45:23 2866 1
原创 SpringBoot2.x前端控制器源码详解(四)视图解析器
最后来看一下视图解析器,如果前面mv获取过程中没有异常,就将mv进行提交:一来先国际化,然后仅继续传递
2020-02-21 18:22:52 281
原创 SpringBoot2.x前端控制器源码详解(三)controller层定义的requestmapping如何确定传入参数
这次主要看一下HandlerAdapter是怎么通过反射得到ModelAndView的,进入handle方法:最终都是通过invokeHandlerMethod得到的:似乎根据是否是异步,有不同的生成方式,本文就看一下getModelAndView的方法:层层深入之后,找到比较底层的调用,这个方法getMethodArgumentValues就是用来找参数的:关于参数解析先到这里,...
2020-02-20 18:47:29 450
原创 SpringBoot2.x前端控制器源码详解(二)handlerMappings和handlerAdapters
SpringWeb中有九个重要的组件,本文主要看一下handlerMappings和handlerAdapters。接着上文的内容:SpringBoot2.x前端控制器源码详解(一)关于handler和handlerAdapter的获取这里就采用递归方式在handlermappings中搜索,而我们标注了@requestmapping的方法都放在了requestmappinghandlerm...
2020-02-19 22:32:18 443
原创 SpringBoot2.x前端控制器源码详解(一)
Debug查看源码springboot的前端控制器沿用了springmvc中的前端控制器,源码基本一致。即使有差异,思路也是一致的,因此不进行详细比较(偷个懒)。建一个简单的控制器方便调试,然后开启debug。前端控制器处理过程直接来到DispatcherServlet的doDispatch方法。这里有4个主要的关键点。1、第一个就是获取处理器,记录了要用的controller2、然...
2020-02-19 16:09:42 630
原创 SpringBoot前端控制器
看了相关文章,有几篇不错的,mark一下。首先是原始SpringMVC中的一个大致的框架以及流程图:https://segmentfault.com/a/1190000017528294接下来是springboot中的源码分析:https://www.cnblogs.com/wyq1995/p/9953401.html还有一个科普性质的发展史:https://www.cnblogs.c...
2020-02-18 14:13:24 1779
原创 IDEA web项目 not found for the web module
初次建立web项目,虽然tomcat启动成功,但是找不到web项目。将artifacts的输出目录改成与web项目的同级目录就能正常启动了可以参考https://www.cnblogs.com/deng-cc/p/6416332.html对项目配置解释的挺详细的。欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar...
2020-01-21 22:00:17 1970 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人