随笔分类 - 源码解析
摘要:我们都知道线程本地变量表也就是ThreadLocal在我们做线程级的数据隔离时非常好用,但是有时候我们会想如何让子线程获取到父线程的ThreadLocal,其实在线程中除了ThreadLocal外还有InheritableThreadLocal,顾名思义,可继承的线程变量表,可以让子线程获取到父线程
阅读全文
摘要:我们知道线程池在两种情况下会添加线程1.线程数量小于coresize时,添加任务会添加线程 2.线程数量大于coresize 小于maximumPoolSize时,且任务队列满了 会添加线程。 那么线程池中的线程销毁与存活条件是怎样的呢? 目前java的线程池中关于线程的数量主要有两个值值得注意。c
阅读全文
摘要:前言 前面几个章节说明了下spring是如何发现并注册类到容器,以及最终的实例化。本文则讲下spring中较为核心的内容,aop概念,又叫切面式编程。切面编程可以做到无侵入性的改变代码的执行逻辑,比如我们经常涉及到的日志,事物等概念便可以用切面的思维来解决。spring aop会涉及到两个比较重要的
阅读全文
摘要:前言 前面几章spring已经把需要的注册的bean的信息已经全部加载到了BeanFactory中了,那么之后要做的事儿当然就是进行实例化了,当然了可能有人会问为何不在加载到bean信息的时候直接进行实例化呢,这不还需要依赖注入嘛,当然是要所有的都加载完了才能实例化。ApplicationConte
阅读全文
摘要:前言 上文说了springboot是如何发现并保存我们需要注册的bean,其最重要的就是依靠一个特殊的BeanFactoryProcessor-》ConfigurationClassPostProcessor,本文则主要来讲一下其详细的加载过程。先放一张大致的加载图 正文 这儿先回顾下上文Confi
阅读全文
摘要:最近发现看过的东西容易忘,但是写一遍之后印象倒是会深刻的多。 总所周知springboot极大的简化了java开发繁琐性,而其最大的优势应该就是自动化配置了。比如要使用redis,我们直接引入相关的包,将redis连接信息配置下即可使用。本文主要分析下springboot自动化配置的关键。 本文分析
阅读全文
摘要:前言 最近参与的项目中,接口中返回的日期格式不对,发现项目中配置了fastjson作为spring的数据转换器,于是使用了fastjson的字段格式化转换注解 发现不起作用。这让我很疑惑,然后在fastjson的相关代码中打断点发现请求并没有进入,最后在springmvc的流程源码中发现最后调用的是
阅读全文
摘要:前言 mybatis中拦截器主要用来拦截我们在发起数据库请求中的关键步骤。其原理也是基于代理模式,自定义拦截器时要实现Interceptor接口,并且要对实现类进行标注,声明是对哪种组件的指定方法进行拦截。mybatis的四大组件Executor,ParameterHandler,ResultSet
阅读全文
摘要:前言 mybatis的缓存大家都知道分为一级和二级缓存,一级缓存系统默认使用,二级缓存默认开启,但具体用的时候需要我们自己手动配置。我们依旧还是先看一个demo。这儿只贴出关键代码 public interface AssetInfoMapper { List<AssetInfo> get(@Par
阅读全文
摘要:前言 前面两章我们构建了SqlSessionFactory,并通过SqlSessionFactory创建了我们需要的SqlSession,并通过这个SqlSession获取了我们需要的代理mapper。而SqlSession中最重要的则是用来处理请求的Executor,在上一章中我们创建了Simpl
阅读全文
摘要:前言 上篇笔记我们成功的装载了Configuration,并写入了我们全部需要的信息。根据这个Configuration创建了DefaultSqlSessionFactory。本篇我们实现构建SqlSession即mybatis的一次sql会话,并获取到我们常用的代理mapper接口类。在正文之前先
阅读全文
摘要:前言 mybatis是目前进行java开发 dao层较为流行的框架,其较为轻量级的特性,避免了类似hibernate的重量级封装。同时将sql的查询与与实现分离,实现了sql的解耦。学习成本较hibernate也要少很多。 我们可以先简单的回顾下mybatis的使用方式。一般两种方式,单独使用或者配
阅读全文
摘要:代理模式是一种很常见的模式,本文主要分析cglib动态代理的过程 1. 举例 使用cglib代理需要引入两个包,maven的话包引入如下 <!-- https://mvnrepository.com/artifact/cglib/cglib --> <dependency> <groupId>cgl
阅读全文
摘要:代理模式是一种很常见的模式,本文主要分析jdk动态代理的过程 1.举例 public class ProxyFactory implements InvocationHandler { private Class target; public <T>T getProxy(Class<T> c) {
阅读全文

浙公网安备 33010602011771号