![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
文章平均质量分 87
everyD_struggle
任重而道远
展开
-
动态数据源-SpringManagedTransaction&&AbstractRoutingDataSource 源码解析过程
动态数据源-源码解析过程这其中需要mybatis的一些知识,进行一次debug调试,来查看过程。在我们需要决定的地方打上断点,发送一次请求,我们先不要着急查看往下执行,先看一下调用栈已经调用了哪些方法并处于哪些类中。如果看过mybatis源码,那么对上面的流程其实有一定的了解。接着进行断点的执行:这里回到了DynamicDataSource ,因为我们的 DynamicDataSource 是继承AbstractRoutingDataSource 的,并重写了AbstractRoutingDat原创 2021-09-21 00:25:21 · 1154 阅读 · 0 评论 -
java源码 - Spring5.x(7)之 SpringMVC
文章目录1. SpringMVC1.1 ContextLoaderListener1.2 initWebApplicationContext1. SpringMVCSpringMVC 系列请求debug1.1 ContextLoaderListener这里主要是为了搞清楚SpringMVC的IOC启动过程ContextLoaderListener可以指定在Web应用程序启动时载入Ioc容器,正是通过ContextLoader来实现的,可以说是Ioc容器的初始化工作。如果要使用Context原创 2020-08-19 11:45:08 · 197 阅读 · 0 评论 -
java源码 - Spring5.x(6)之 事务
NamespaceHandler初始化与调用时机的文章文章目录1. 事务自定义标签todo1. 事务自定义标签配置文件版:<tx:annotation-driven />注解版:@EnableTransactionManagementorg.springframework.transaction.config.TxNamespaceHandler @Override public void init() { registerBeanDefinitionParser(".原创 2020-08-15 21:17:40 · 239 阅读 · 0 评论 -
java源码 - Spring5.x(5)之 整合MyBatis源码
文章目录1. Mybatis独立使用2. 整合Spring3. 源码分析1. Mybatis独立使用 <!--MyBatis --> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <art原创 2020-08-14 16:52:01 · 214 阅读 · 0 评论 -
java源码 - Spring5.x(4)之 AOP
官方文档文章目录1. AOP示例2. AspectJAutoProxyBeanDefinitionParsertodo1. AOP示例//被增强的目标对象@Component//AspectJ注解方式@Aspectpublic class AspectAdviceBeanUseAnnotation { // 定义一个全局的Pointcut @Pointcut("execution(* com.lyq.config.aopconfig.*.do*(..))") pu.原创 2020-08-13 11:19:39 · 201 阅读 · 0 评论 -
java源码 - Spring5.x(3)之 ApplicationContext#refresh
ApplicationContext 相比BeanFactory提供了更多的扩展功能文章目录1. ApplicationContext1. ApplicationContext原创 2020-08-12 22:19:59 · 152 阅读 · 0 评论 -
java源码 - Spring5.x(2)之 Bean的加载与创建
文章目录原创 2020-08-10 17:04:32 · 287 阅读 · 0 评论 -
java源码 - Spring5.x(1)之 基本概览
书籍《Spring源码深度解析》官方文档之前的一篇推荐一个博主的系列博客,手写IOC,AOP源码Spring5.x文章目录1. 整体架构1.2 环境搭建pom2. Spring流程分析3. 核心类3.1 DefaultlistableBeanFactory3.2 XmlBeanDefinitionReader3.3 XmlBeanFactory1. 整体架构从Spring的架构图从下往上看,下层是上层的依据基础。Core Container其中的Core和Beans模块是框架的.原创 2020-08-07 21:51:41 · 209 阅读 · 0 评论 -
Tomcat学习笔记(9)- 管道(Pipeline)、tomcat启动
文章目录1. 管道模式2. Valve接口3. Pipeline4. 流程4.1 StandardEngineValve4.2 StandardHostValve4.3 StandardContextValve4.4 StandardWrapperValve4.5 debug一次1. 管道模式管道模式把多个对象连接起来,整体看起来就像若干个阀门嵌套在管道中,而处理逻辑就放在阀门上。在tomcat中,Valve接口定义了阀门的调用方法,由于阀门与阀门使用单链表结构连接,因此需提供对下一个阀门的操作;Pi原创 2020-08-03 17:11:41 · 694 阅读 · 0 评论 -
Tomcat学习笔记(8)- Mapper(映射器)与 JNDI
文章目录1. 请求的模型映射2. Mapper的实现3. 路由Mapper4. JNDI简介6. 在Tomcat中使用JNDI1. 请求的模型映射Mapper组件主要的职责是负责Tomcat的请求路由,每个客户端的请求到达Tomcat后,都将由Mapper路由到对应的处理逻辑(Servlet)上。在Tomcat的结构中有两部分会包含Mapper组件,一个是Connector组件,称为全局路由Mapper;另外一个是Context组件,称为局部路由Mapper。本章将深入探讨Tomcat的路由模块Ma原创 2020-08-02 21:48:13 · 741 阅读 · 0 评论 -
Tomcat学习笔记(7)- Loader(类加载器)
文章目录1. 什么是类加载器2. 破坏双亲委派3. Tomcat的类加载器4. ClassLoaderFactory5. todo1. 什么是类加载器详情可了解所谓类加载器,就是用于加载Java类到Java虚拟机中的组件,它负责读取Java字节码,并转换成java.lang.Class类的一个实例,使字节码.class文件得以运行。类加载器有如下三种分类:启动类加载器(Bootstrap ClassLoader):加载对象是Java核心库,把一些核心的Java类加载进JVM中,这个加载器使用原生原创 2020-08-02 12:05:29 · 455 阅读 · 0 评论 -
Tomcat学习笔记(6)- 生命周期与日志管理
文章目录1. Lifecycle接口2. 状态转化3. 生命周期事件监听todo1. Lifecycle接口为了方便管理Tomcat众多组件的启动, 销毁,Tomcat抽象出一层LifeCycle接口来作为解决方案。/** *组件生命周期方法的公共接口。卡特琳娜组件*可以实现此接口(以及适用于他们支持的功能),以提供一致的机制*启动和停止组件。*支持{@link生命周期}的组件的有效状态转换*:这图很重要哦 * <pre> * start() *原创 2020-07-30 17:23:58 · 398 阅读 · 0 评论 -
Tomcat学习笔记(5)- 容器(Engine、Host、Context、Wrapper)
Engine即为全局引擎容器,它的标准实现是StandardEngine。Host在整个Servlet引擎中抽象出Host容器用于表示虚拟主机,它是根据URL地址中的主机部分抽象的,一个Servlet引擎可以包含若干个Host容器,而一个Host容器可以包含若干个Context容器。在Tomcat中Host的标准实现是StandardHost,它从虚拟主机级别对请求和响应进行处理。一个Context对应一个Web应用程序,但Web项目的组成比较复杂,它包含很多组件。对于Web容器,需要将Web应用.原创 2020-08-01 21:51:53 · 2159 阅读 · 0 评论 -
Tomcat学习笔记(4)- Connector组件
Connector(连接器)组件是Tomcat最核心的两个组件之一,主要的职责是负责接收客户端连接和客户端请求的处理加工。每个Connector都将指定一个端口进行监听,分别负责对请求报文解析和对响应报文组装,解析过程生成Request对象,而组装过程则涉及Response对象。文章目录1. Protocol组件2. Http11Protocol2.1 ProtocolHandler2.2 Http11AprProtocol2.3 AbstractHttp11Protocol2.4 AbstractP.原创 2020-08-01 21:52:15 · 395 阅读 · 0 评论 -
Tomcat学习笔记(3)- Server组件与Service组件
目录1. Server1.1 Server组件的作用Server组件和Service组件是Tomcat核心组件中最外层级的两个组件,Server组件可以看成Tomcat的运行实例的抽象,而Service组件则可以看成Tomcat内的不同服务的抽象。1. Server请看:home/conf/server.xml文件Server组件是代表整个Tomcat的Servlet容器,从server.xml配置文件也可以看出它属于最外层组件。默认配置了五个Listener:GlobalNamingR原创 2020-08-01 21:52:04 · 583 阅读 · 0 评论 -
Tomcat学习笔记(2)- 整体架构
文章目录1. Server组件2. Service组件3. Connector组件1. Server组件Server是最顶级的组件,它代表Tomcat的运行实例,在一个JVM中只会包含一个Server。在Server的整个生命周期中,不同阶段会有不同的事情要完成。为了方便扩展,它引入了监听器方式,所以它也包含了Listener组件。另外,为了方便在Tomcat中集成JNDI,引入了GlobalNamingResources组件。同时,还包含了Service核心组件。什么是JNDI?JNDI(Jav原创 2020-07-24 20:41:13 · 283 阅读 · 0 评论 -
Tomcat学习笔记(1)- 源码环境搭建
书籍《Tomcat内核设计剖析》《how tomcat works?》文章目录1.1.原创 2020-07-23 12:43:16 · 293 阅读 · 0 评论 -
java源码 - SpringMVC(10)之 一次请求总结
文章目录1. Servlet1. ServletServlet =原创 2020-07-21 15:01:39 · 268 阅读 · 0 评论 -
java源码 - SpringMVC(9)之 其他Resolver
文章目录1. LocaleResolver1.1 继承关系类图1.2 AcceptHeaderLocaleResolver1.3 AbstractLocaleResolver1.4 AbstractLocaleContextResolver1.5 FixedLocaleResolver1.6 SessionLocaleResolver2. ThemeResolver2.1 类继承关系图3. FlashMapManager3.1 AbstractFlashMapManager3.2 SessionFlashM原创 2020-07-19 17:44:01 · 454 阅读 · 0 评论 -
java源码 - SpringMVC(8)之 MultipartResolver
StandardServletMultipartResolver和CommonsMultipartResolver。前者使用了Servlet3.0标准的上传方式,后者使用了Apache的commons-fileupload。文章目录1. StandardServletMultipartResolver2. CommonsMultipartResolver1. StandardServletMultipartResolverStandardServletMultipartResolver使用了Se.原创 2020-07-19 15:56:08 · 672 阅读 · 0 评论 -
java源码 - SpringMVC(7)之 HandlerExceptionResolver
文章目录1. RequestToViewNameTranslator2. HandlerExceptionResolver3. AbstractHandlerExceptionResolver3.1 ExceptionHandlerExceptionResolver3.2 DefaultHandlerExceptionResolver3.3 ResponseStatusExceptionResolver3.4 SimpleMappingExceptionResolver4. 总结:1. RequestTo原创 2020-07-18 21:05:37 · 444 阅读 · 0 评论 -
java源码 - SpringMVC(6)之 ViewResolver
ViewResolver主要的作用是根据视图名和Locale解析出视图,解析过程主要做两件事:解析出使用的模板和视图的类型。文章目录1. 继承结构图2. ViewResolverComposite3. ContentNegotiatingViewResolver4. AbstractCachingViewResolver系列4.1 UrlBasedViewResolver1. 继承结构图Spring MVC中ViewResolver整体可以分为四大类:AbstractCachingViewRes.原创 2020-07-17 22:23:44 · 218 阅读 · 0 评论 -
java源码 - SpringMVC(5)之 HandlerAdapter
HandlerMapping通过request找到了Handler,HandlerAdapter是具体使用Handler来干活的,每个HandlerAdapter封装了一种Handler的具体使用方法。有时候注解翻译过来就不说人话了。文章目录1. 依赖关系图总概2. 直接调用的Adapter3. RequestMappingHandlerAdapter3.1 父类AbstractHandlerMethodAdapter3.2 RequestMappingHandlerAdapter概述3.3 R.原创 2020-07-16 22:13:46 · 180 阅读 · 0 评论 -
java源码 - SpringMVC(4)之 HandlerMapping
<spring.version>5.2.4.RELEASE</spring.version>文章目录1. 类关系依赖图与继承关系2. AbstractHandlerMapping2.1 初始化2.2 使用3. AbstractUrlHandlerMappingtodo1. 类关系依赖图与继承关系主要看红线的,即如下继承关系:2. AbstractHandlerMapping还是见了很多次的模板模式,AbstractHandlerMapping设计了HandlerMa.原创 2020-07-14 22:24:53 · 296 阅读 · 0 评论 -
java源码 - SpringMVC(3)之 组件
doDispatch看完SpringMVC流程也就基本完成了接下来就是了解流程内SpringMVC是如何完成请求处理,与结果封装等操作的。即用到了哪些组件?组件的作用?是否可自定义组件?文章目录1. HandlerMapping1. HandlerMapping...原创 2020-07-14 20:58:49 · 124 阅读 · 0 评论 -
java源码 - SpringMVC(2)之 请求过程
还是和前面一样分析HttpServletBean、FrameworkServlet和DispatcherServlet文章目录1. HttpServletBean2. FrameworkServlet1. HttpServletBeanHttpServletBean主要参与了创建工作,并没有涉及请求的处理。2. FrameworkServlet如果了解,Servlet与Tomcat,流程处理的起始是从Servlet接口的Service方法开始,然后在HttpServlet的service方法.原创 2020-07-11 13:03:59 · 431 阅读 · 0 评论 -
java源码 - SpringMVC(1)之 初始组件
SpringMVC的本质是一个Servlet建议看SpringMVC源码时,对文章目录1. 环境搭建(maven)1. 环境搭建(maven)原创 2020-07-10 22:01:50 · 193 阅读 · 0 评论 -
java源码-SpringBoot概览
什么是SpringBoot?为所有Spring开发提供根本上更快且可广泛访问的入门经验。开箱即用,但随着需求开始偏离默认值,您会很快摆脱困境。提供一系列大型项目通用的非功能性功能(例如嵌入式服务器,安全性,指标,运行状况检查和外部化配置)。完全没有代码生成,也不需要XML配置。优点 :(1) 快速构建项目;(2) 对主流开发框架的无配置集成;(3) 项目可独立运...原创 2020-04-12 20:18:26 · 277 阅读 · 0 评论 -
手写配置解析
一、为什么要提供配置的方法经过前面的手写Spring IOC、手写Spring DI、手写Spring AOP,我们知道要创建一个bean对象,需要用户先定义好bean,然后注册到bean工厂才能创建一个bean对象。代码如下:https://www.cnblogs.com/leeSmall/p/10073931.html static PreBuildBeanFactory ...转载 2020-04-12 20:16:36 · 129 阅读 · 0 评论 -
手写IOC
一、IOC分析1. IOC是什么?IOC:Inversion of Control控制反转,也称依赖倒置(反转)问题:如何理解控制反转?反转:依赖对象的获得被反转了。由自己创建,反转为从IOC容器中获取(和自动注入)2. IOC容器带来什么好处?1)代码更简洁,不需要去new需要使用的对象了。2)面向接口编程,使用者与具体类解耦,易扩展、替换实现者。3)可以方便进行AOP增强。进行...转载 2020-04-12 20:15:50 · 809 阅读 · 0 评论 -
手写AOP
//不能再invoke 方法里面调用类似 proxy.toString()的方法,会stackoverflow的 原因: Object类里面的一部分可被子类继承的 方法也是被增强了的 可以通过反编译动态代理生成的类文件查看一、AOP分析问题1:AOP是什么?Aspect Oriented Programming 面向切面编程,在不改变类的代码的情况下,对类方法进行功能增强。问题2:我们...转载 2020-04-12 20:10:02 · 250 阅读 · 0 评论 -
java源码-springmvc
<https://www.cnblogs.com/Java-Starter/p/10310565.html初始化过程https://blog.csdn.net/dhaiuda/article/details/80026354总结下HttpServletBean,FrameworkServlet和DispatcherServlet初始化过程1.HttpServletBean初始化w...转载 2020-04-12 20:07:08 · 233 阅读 · 0 评论 -
java源码 - Spring5.x
spring 5.0.8最新5.2.4注解版可以参考:https://www.cnblogs.com/leeSmall/p/10099503.html AnnotationConfigApplicationContext actx =new AnnotationConfigApplicationContext(Config.class); ...原创 2020-04-12 20:03:38 · 127 阅读 · 0 评论 -
jdk源码
ObjectObject 类属于 java.lang 包,此包下的所有类在使用时无需手动导入,系统会在程序编译期间自动导入。Object 类是所有类的基类,当一个类没有直接继承某个类时,默认继承Object类,也就是说任何类都直接或间接继承此类,Object 类中能访问的方法在所有类中都可以调用。##equals() public boolean equals(Object obj)...原创 2020-04-12 19:48:40 · 1404 阅读 · 0 评论 -
java源码-mybatis源码解读(3.4.3)
mybatis源码解读(3.4.3)Last Published: 09 March 2020Version: 3.5.4简约步骤截图及理解SqlSessionFactory获取官网是这么说的 : 一旦被创建,SqlSessionFactory 应该在你的应用执行期间都存在。没有理由来处理或重 新创建它。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重...原创 2020-04-12 19:34:17 · 359 阅读 · 0 评论