前言: IOC容器的初始化包括BeanDefinition的Resource定位.载入.注册三个基本过程. 本文以ApplicationContext为例讲解,XmlWebApplicationContext.ClasspathXmlApplicationContext等都属于这个继承体系,这些都是我们日常开发中很熟悉的.其继承体系如下图: ApplicationContext允许上下文嵌套,通过接口中的此方法保持父上下文,可以维持一个上下文体系: @Nullable ApplicationCo…
首先我们来认识下IOC和DI: IOC(Inversion of Control)控制反转:控制反转,就是把原先代码里面需要实现的对象创建.依赖的代码,反转给容器来帮忙实现.所以需要创建一个容器,并且需要一种描述来让容器知道需要创建的对象与对象的关系.这个描述最具体表现就是可配置的文件. DI(Dependency Injection)依赖注入:指对象是被动接受依赖类而不是自己主动去找,即对象不是从容器中查找它依赖的类,而是在容器实例化对象的时候主动将它依赖的类注入给它. 思考以下问题: 对象和…
spring总共大约20个模块,这些模块被整合在核心容器(Core Container).AOP和设备支持.数据访问及集成.Web.报文发送.Test 6个模块集合. 组成Spring框架的每个模块集合或者模块都可以单独存在,也可以一个模块或者多个模块联合实现. 模块组成和功能如下: 1.核心容器:spring-beans.spring-core.spring-context.spring-expression 4个模块组成. spring-beans和spring-core模块是Spring框…
1 源码地址(带有中文注解)git@github.com:yakax/spring-framework-5.0.2.RELEASE--.git Spring 的设计初衷其实就是为了简化我们的开发 基于 POJO 的轻量级和最小侵入性编程: 通过依赖注入和面向接口松耦合: 基于切面和惯性进行声明式编程: 通过切面和模板减少样板式代码: 而他主要是通过:面向 Bean(BOP).依赖注入(DI)以及面向切面(AOP)这三种方式来达成的. 面向Bean Spring 是面向Bean的编程(Bean O…
更多文章点击--spring源码分析系列 主要分析内容: 一.InstantiationAwareBeanPostProcessor简述与demo示例 二.InstantiationAwareBeanPostProcessor与BeanPostProcessor对比 三.InstantiationAwareBeanPostProcessor源码分析:注册时机和触发点 (源码基于spring 5.1.3.RELEASE分析) 一.InstantiationAwareBeanPostProcesso…
jQuery 1.9.1源码分析已经完毕.目录如下 jQuery-1.9.1源码分析系列(一)整体架构 jQuery-1.9.1源码分析系列(一)整体架构续 jQuery-1.9.1源码分析系列(二)jQuery选择器 jQuery-1.9.1源码分析系列(二)jQuery选择器续1 jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选 jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——词法解析 jQuery-1.9.1源码分析系列(三) Sizzle选择…
目前国内比较流行的php框架由thinkphp,yii,Zend Framework,CodeIgniter等.一直觉得自己在php方面还是一个小学生,只会用别人的框架,自己也没有写过,当然不是自己不想写,而是感觉自己的实力不够,哈哈..那么如何使得自己的编码能力变得强悍呢,那当然是去看别人写的优秀的代码了.所以今天终于准备自己写一个源码分析系列,目的很简单,就是希望自己能够在php方面能够更上一层楼. 关于为什么选择thinkphp,原因主要有以下几点:第一,周围的同学和公司用的几乎都是thi…
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说明和演示.由于文章的篇幅比较大,这里特地拿出一章用于介绍本文的结构和内容.那下面我们来看一下本文的章节安排: 如上图,本文的大部分篇幅主要集中在了第3章和第4章.第3章演示了几种持久层技术的用法,并在此基础上,分析了各种技术的使用场景.通过分析 MyBatis 的使用场景,说明了为什么要使用 MyB…
更多文章点击--spring源码分析系列 1.FactoryBean设计目的以及使用 2.FactoryBean工厂类机制运行机制分析 1.FactoryBean设计目的以及使用 FactoryBean对象设计是为了生成简化对象, 在BeanDefinition加载的时候FactoryBean的beanName会带有特殊前缀&. public interface FactoryBean<T> { @Nullable T getObject() throws Exception; @Nu…
1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅读了 AOP 方面的源码.开始以为 AOP 部分的源码也会比较复杂,所以原计划投入一周的时间用于阅读源码.但在我大致理清 AOP 源码逻辑后,发现没想的那么复杂,所以目前进度算是超前了.从今天(5.15)开始,我将对 AOP 部分的源码分析系列文章进行更新.包括本篇文章在内,本系列大概会有4篇文章,…