源码系列
文章平均质量分 85
代码最诚实的朋友
用眼和脑能看到和想到的未来是基于大数据的人工智能,但是仍然不要忘了我们最爱的源代码,最爱的算法和数据结构,还有遥遥不可及的数学
展开
-
查看动态代理生成的类文件
JDK的动态代理场景在数据保存前后加入日志实例先定义数据保存接口interface DataSave{ void save();}然后定义一个sql拦截器,在数据保存前后打印日志class SqlInterceptor implements InvocationHandler{ private DataSave dataSave; public SqlInterceptor(DataSave dataSave){ this.data原创 2022-02-25 17:59:27 · 1555 阅读 · 0 评论 -
mybatis与spring boot的集成
前言MyBatis提供了整合到 Spring Boot 的方案 mybatis-spring-boot-starter,能够让你快速的在 Spring Boot 上面使用 MyBatis,那么我们来看看这个 mybatis-spring-boot-starter 是如何将 MyBatis 集成到 Spring Boot中的。mybatis的自动装配引入mybatis-spring-boot-starter包。 <dependency> <groupI原创 2022-01-24 22:21:45 · 4739 阅读 · 2 评论 -
使用IDEA读JDK源码
建议人手一个,每当心血来潮时、遇到问题时、碰到疑惑时、闲得无聊时都可以打开工程看一看源码,做做笔记和注释。搭建源码阅读调试环境我个人觉得看源码这个事情还是应该单独搞一个Java工程,源码放里面,测试代码也放里面,集中调试,集中看代码,集中写注释比较方便一些。1、创建源码阅读项目选择最普通的Java基础项目即可:2、创建两个目录分别为:sourcetest3、导入JDK源码有很多小伙伴问JDK的源码在哪里呢?远在天边,仅...原创 2021-05-23 15:26:31 · 455 阅读 · 2 评论 -
spring-mvc源码-bean定义加载-非默认标签解析(tx:annotation-driven)
<tx:annotation-driven />这个标签对应的处理器是TxNamespaceHandler,对应的解析器是AnnotationDrivenBeanDefinitionParser,parse方法如下: public BeanDefinition parse(Element element, ParserContext parserContext) { //注册事务监听器工厂 registerTransactionalEventListenerFactory(pars原创 2020-06-28 18:03:12 · 276 阅读 · 0 评论 -
spring-mvc源码-bean定义加载-非默认标签解析(context:component-scan)
非默认标签解析的流程是一样的,都是先根据自己的命名空间找到对应的处理器,context:component-scan这个标签的命名空间是http://www.springframework.org/schema/context,根据这个命名空间可以找到对应的处理器:ContextNamespaceHandler,然后再找到对应的解析器解析,具体源代码可以参阅:https://blog.csdn.net/matt8/article/details/106643583我们从解析器的解析开始看,最终拿到的对应原创 2020-06-18 22:17:57 · 193 阅读 · 0 评论 -
spring-mvc源码-bean定义加载-默认标签解析(import)
import标签的解析是调用的org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#importBeanDefinitionResource方法,源码如下: protected void importBeanDefinitionResource(Element ele) { String location = ele.getAttribute(RESOURCE_ATTRIBUTE); if (!Str原创 2020-06-16 22:28:20 · 208 阅读 · 0 评论 -
spring-mvc源码-bean定义加载-默认标签解析(bean)
接上篇:bean定义加载整体流程:https://blog.csdn.net/matt8/article/details/106352083看下默认命名空间标签的解析过程,也就是http://www.springframework.org/schema/beans命名空间下标签的解析过程。bean标签的解析是从org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#parseDefaultElement这个方原创 2020-06-16 18:13:11 · 262 阅读 · 0 评论 -
spring-mvc源码-bean定义加载-非默认标签解析(context:annotation-config)
接上篇:bean定义加载整体流程:https://blog.csdn.net/matt8/article/details/106352083看下非默认标签的解析过程,以<context:annotation-config/>这个标签为例。非默认标签的解析,是通过org.springframework.beans.factory.xml.BeanDefinitionParserDelegate#parseCustomElement(org.w3c.dom.Element)这个方法实现的,这原创 2020-06-10 20:59:40 · 156 阅读 · 0 评论 -
spring-mvc源码-bean定义加载
接着上篇,在根上下文初始化的过程中,有一步配置和启动根上下文方法:org.springframework.web.context.ContextLoader#configureAndRefreshWebApplicationContext,这里面包含了对bean的所有处理,下面我们慢慢来看。先看下这个方法的实现:configureAndRefreshWebApplicationContext protected void configureAndRefreshWebApplicationConte原创 2020-06-09 15:14:11 · 289 阅读 · 0 评论 -
spring-mvc源码-上下文的初始化
1、总览目录1、总览2、根上下文初始化 spring-mvc项目里一般会有两个上下文,一个是根上下文(Root WebApplicationContext),一个是spring mvc上下文(Servlet WebApplicationContext,可以有多个),那么为什么要存在这两种上下文,可以看下官方的解释。DispatcherServletexpects ...原创 2020-05-05 20:45:23 · 434 阅读 · 0 评论 -
spring-mvc源码-DispatcherServlet
spring版本:4.3.15.RELEASE类继承关系HttpServletBean,FrameworkServlet和DispatcherServlet初始化过程1.HttpServletBean初始化web.xml中的参数2.FrameworkServlet将上下文赋予当前Servlet3.DispatcherServlet初始化HandlerMapping(请求...原创 2020-03-29 19:48:20 · 152 阅读 · 0 评论 -
一起读源码之ThreadLocal
这个类提供“thread-local”变量,这些变量与线程的局部变量不同,每个线程都保存一份该变量的副本,可以通过get或者set方法访问。如果开发者希望将类的某个静态变量(user ID或者transaction ID)与线程状态关联,则可以考虑使用ThreadLocal。原创 2017-07-21 19:39:06 · 360 阅读 · 0 评论