自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

转载 spring源码之IOC的依赖注入

前言通过前面的初始化分析,我们已经把xml中的bean信息转换成BeanDefinition对象保存在DefaultListableBeanFactory的beanDefintionMap中了。这一篇我们会对单例bean的创建过程做一个分析。概述之前我们在分析ioc的非核心部分时,看到了许多地方都是想要使用一个bean,直接调用getBean方法就好。这个是由BeanF...

2018-08-19 16:16:00 81

转载 spring源码之IOC的初始化

前言上一篇对启动时的整个流程进行了大体的分析,这一篇ioc的核心部分进行分析。包括初始化过程和依赖注入过程。概述在分析之前先看几个类图DefaultListableBeanFactory是ioc的一个核心类,可以看到我们关心的bean定义和单例bean都注册在它的属性上。ClassPathXmlApplicationContext注意一下,它实现了...

2018-08-19 13:29:00 72

转载 spring源码之IOC的非核心部分

前言这篇是对IOC的非核心部分进行分析,是除去了初始化和依赖注入的部分进行分析。对于非web应用,我们在使用spring时,我们会new一个上下文,比如常用的new ClassPathXmlApplicaionContext("applicationContext.xml")。那么我们就从这句开始进行分析。源码分析从new 开始,这里我们可以看到,做了下面几个事...

2018-08-09 20:09:00 91

转载 spring源码之Aware

前言上一篇,我们看了下BeanPostProcessor接口,以及它下面的各个子接口。本篇来简单地看下Aware接口。概述Aware这个单词翻译过来就是知道,感知的意思。在spring中,它的常见的子接口,比如BeanNameAware、BeanFactoryAware、ApplicationContextAware接口。假设我们的类继承了BeanNameAware这个...

2018-08-06 21:06:00 148

转载 spring源码之BeanPostProcessor

前言spring的强大点之一,在于它给我们提供了许多的扩展点,其中非常重要的一个接口就是BeanPostProcessor。概述我们可以IOC的依赖注入阶段分为三个阶段,即实例化,属性注入、初始化。在分析之前,先来熟悉下几个接口BeanPostProcessor、InstantiationAwareBeanPostProcessor、SmartInstantiation...

2018-08-06 14:51:00 89

转载 springmvc源码分析之请求参数、类型转换、数据绑定

前言通过前面的分析,我们知道了请求过来,怎么找到相应的handlerMethod。本篇对请求参数的转换进行讲解。概述在进行分析之前,我们回到DispatcherServlet的doDispatch方法去看一下,请求过来后真正执行业务控制器的入口是从HandlerAdapter的handle方法。我们熟悉一下几个类,HandlerAdapter、RequestMappin...

2018-08-05 23:33:00 59

转载 springmvc源码分析之拦截器

前言在前面分析getHandler时,我们发现返回的并不是简单的HandlerMethod而是HandlerExecutionChain,本篇就是完成对其中拦截器分析。概述在分析之前,我们先记住几个类名,HandlerInterceptor、HandlerInterceptorAdapter、MappedInterceptor。HandlerIntercepto...

2018-08-05 12:02:00 119

转载 springmvc源码分析之找到Controller

前言前面我们简单地分析了两个过程,本文将会来介绍请求过来是如何找到对应的Controller中的方法的。概述在分析之前,我们先记住几个类名,HandlerMapping接口,RequestMapingHandlerMapping类,HandlerMethod类。HandlerMapping接口:请求和处理方法的映射接口,提供了getHandler方法,我们可以通...

2018-08-04 17:01:00 220

转载 mysql之文件

前言mysql这块,是阅读了《MySQL技术内幕:InnoDB存储引擎(第2版)》,再参照一些博文整理的阅读笔记。概述数据库系统和文件系统在特点上是有很大区别的,但数据库系统是在文件系统的基础上发展起来的,它对数据的管理更有效应。我们应该去了解数据库的各种类型的文件。下面的说明限于mysql和innodb存储引擎,其它数据库或引擎可能有不小的区别。主要可以分为下面几类...

2018-07-24 19:23:00 91

转载 springmvc源码分析之DispatcherServlet

概述MVC大家比较熟悉,M即model,是业务处理层,与我们开发中的(service、dao、model)等对应起来;V即view,是视图层,以前jsp、freemarker、velocity等,现在都是前后端分离了。使用@ResponseBody注解把Controller方法返回的对象通过转换器转换成指定的格式(如json/xml/protobuf)后,再写入到R...

2018-07-22 15:57:00 76

转载 spring源码之事务下篇

前言本篇接着上篇,对TX的依赖注入的特殊处理进行分析。在之前,我们已经对AOP作了一个比较详细的分析,事务这块直接从AopUtils类的canApply方法进行分析。依赖注入时的特殊处理这个方法我们在AOP分析时,已经到了这里但是没有继续分析下去。在事务这块,我们继续向下分析。首先我们看下如何拿到切点的pca.getPointcut()方法。我们知道在初始化时,注册...

2018-07-19 21:51:00 62

转载 spring源码之事务中篇

前言前面对事务的一些概念性知识进行了总结分析,接下来这章会对spring事务这块的源码进行分析。概述在进行AOP分析时,我们把其分析两个过程初始化时的特殊处理依赖注入时的特殊处理事务这块也是基于AOP的,我们也分为两块进行分析,对于一些AOP中提到过的分析,这里会一略而过。初始化时的特殊处理根据我们对于AOP的分析知道了,先要去META-...

2018-07-17 17:55:00 82

转载 spring源码之事务上篇

前言本篇之前,已经写过关于AOP的源码分析,在此基础上来阅读事务的源码是比较清晰的。另外,需要对数据库有一定的了解,我们所说是事务一般指的都是狭义的事务,即数据库事务。文中没有特别指出的数据库,均指的是mysql,后面再来写一篇关于mysql的锁和事务的文章。概述事务指的是一个程序执行单元,这个执行单元要么成功,要么失败,绝对不允许存在中间状态,它是我们恢复和并发控制的...

2018-07-16 20:24:00 78

转载 spring源码之AOP下篇

前言上篇我们分析了初始化时AOP的特殊处理,本篇来分析依赖注入时的特殊处理。在阅读本篇之前,需要对BeanPostProcessor这个接口熟悉。关于BeanPostProcessor,后面会专门写一篇来专业介绍它。概述BeanPostProcessor这个接口提供了两个方法postProcessBeforeInitialization和postProcessAfter...

2018-07-16 11:31:00 68

转载 spring源码之AOP中篇

前言上篇介绍了一些AOP的基础知识,本篇来说一下spring aop的源码分析。初读AOP时,茫然地不知道从哪里开始,可能是当初对IOC的理解不够深刻。后面发现其实AOP的入口和IOC一样,也是从两个方法开始。一个是AbstractApplicationContext的refresh方法中调用obtainFreshBeanFactory去读取配置文件进行初始化操作,另一个就是g...

2018-07-14 14:29:00 116

转载 jdk源码之LockSupport

前言/背景在前面说到了UnSafe类,它给我提供了一个“后门”,让我们可以直接操作内存,挂起线程等操作。这一讲我们来看看LockSupport,顾名思义,它是给我们后面的LockSupport提供支持的。概述在我们过去的学习的,说起线程的挂起与恢复,我们就会想到wait与notify。在LockSupport中提供了另一个挂起(park)与恢复unpark线程的方式。两...

2018-07-10 08:32:00 42

转载 spring源码之AOP上篇

概述AOP,面向切面编程,通过预编译或者动态代理的方式实现程序公共功能维护的技术。这里的公共功能指的就是我们平常所说的横切关注点,在系统开发中我们可以将关注点划分为核心关注点与横切关注点。核心关注点:核心关注点上在需求分析时,根据不同的业务需求划分出来的不同模块,用来完成业务逻辑处理。横切关注点:对于那些与业务逻辑不相关的、核心关注点共同需要的关注点,比如日志,事务...

2018-07-08 19:30:00 43

转载 jdk源码之Unsafe

前言/背景在最近的学习当中,愈发感到很多知识点介于一种似懂非懂的尴尬阶段。也就有了一种开始写博客的冲动,开始新的学习之路。希望在这里总结自己的学习,同时能够得到大家的指正。概述这里只讨论jdk8及以前,jdk9克隆出一个新的 jdk.internal.misc.Unsafe 类来替代前者的功能,并且完全不暴露给用户。Unsafe类扩展了java语言的表达能力,便于在ja...

2018-07-08 13:31:00 189

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除