
spring源码深度解析
文章平均质量分 95
小潭渔
这个作者很懒,什么都没留下…
展开
-
spring源码深度解析---bean的加载(中)
spring源码深度解析—bean的加载(中)1. 缓存中获取单例bean之前一篇我们介绍过FactoryBean的用法之后,就可以了解bean加载的过程了。单例在Spring的同一个容器内只会被创建一次,后续再获取bean直接从单例缓存中获取,当然这里也只是尝试加载,首先尝试从缓存中加载,然后再次尝试从singletonFactorry加载因为在创建单例bean的时候会存在依赖注入的情况...原创 2018-04-16 11:07:00 · 3446 阅读 · 0 评论 -
spring源码深度解析——数据库连接JDBC(1)
spring源码深度解析——数据库连接JDBC(1)JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行Sql语句的java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 JDBC连接数据库的流程及原理如下: (1)加载指定的数据库驱动程序。 (2)在java程序中加载驱动程序。通过Class.for...原创 2018-04-26 14:56:36 · 2422 阅读 · 1 评论 -
spring源码深度解析——数据库连接JDBC(2)
spring源码深度解析——数据库连接JDBC(2)1. query方法在之前的数据库连接JDBC(1)中我们分析了insert/update方法,接下来我们分析下query功能的实现。在之前的示例中我们用了List users = this.jdbcTemplate.query(“select * from t_user”,new UserRowMapper());来进行数据库查询操...原创 2018-04-26 16:09:12 · 444 阅读 · 0 评论 -
过滤器(Filter)和拦截器(Interceptor)的区别
摘要: 本文介绍主要介绍了Java Web Filter 与 Struts2 Interceptor 及其之间的联系与区别。一. Filter 介绍 Filter可以认为是Servlet的一种“加强版”,它主要用于对用户请求进行预处理,也可以对HttpServletRespons...转载 2018-04-26 20:17:32 · 237 阅读 · 0 评论 -
Spring&WEB整合原理及源码分析
1. 概述表现层和业务层整合: 1. Jsp/Servlet整合Spring; 2. Spring MVC整合SPring; 3. Struts2整合Spring; 本文主要介绍Jsp/Servlet整合Spring原理及源码分析。2. 整合过程Spring&WEB整合,主要介绍的是Jsp/Servlet容器和Spring整合的过程,当然,这个过程是Spring MVC...原创 2018-05-17 17:23:55 · 685 阅读 · 0 评论 -
深入剖析Spring Web源码(一) - 前言
Spring是一个优秀的轻量级企业应用开发框架,是 Java开发中最流行的工具之一, Spring在 Java企业开发中具有举足轻重的作用。Spring是基于 JavaBeans 的控制翻转( Inversion of Control, IoC)原则进行配置管理,使得应用程序的组建更加快捷简易。并且对 AOP程序设计有较好的支持,使程序接口清晰易读,并且通过 AOP实现了声明式的安全和事物。 ...转载 2018-05-11 14:38:44 · 377 阅读 · 0 评论 -
深入剖析Spring Web源码(二) - Web MVC介绍
这一章,我们将首先介绍经典的 MVC体系结构,通过对比 MVC和 Web MVC的区别,来深入理解 Web MVC的由来和特点。1 MVC 体系结构首先,我们介绍一下 MVC的体系结构。 MVC是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:模型,视图和控制器。如图表 2 ‑1 。 MVC体系结构实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部...转载 2018-05-11 14:47:12 · 527 阅读 · 0 评论 -
深入剖析Spring Web源码(三) - Spring Web MVC工作流
这一章,我们将描述 Spring Web MVC 的各个组件,组件接口,以及各个组件之间如何协调通信,进而理解 Spring Web MVC 框架的基本工作原理。1. 组件以及组件的接口Spring Web MVC 是由若干组件组成的,这些组件相互独立又相互协调工作共同完成 Spring Web MVC 工作流。每个组件都有清晰的接口定义,接口后面都有一个设计良好的类实现体系结构,清晰的抽...转载 2018-05-11 15:05:49 · 1202 阅读 · 0 评论 -
深入剖析Spring Web源码(四) - DispatcherServlet的实现之通用Servlet和HTTP Servlet
Spring是一个轻量级 J2EE框架。它可以运行在任何一个 Web容器上。事实上, Spring的入口点就是实现或者继承了 Web容器规范中的 Servlet, 监听器 (Listener)和过滤器 (Filter)。这一章我们将详细讨论 Spring Web MVC架构的具体实现。DispatcherServlet的实现DispatcherServlet是一个经过多个层次最终继承自 S...转载 2018-05-11 15:26:26 · 1666 阅读 · 1 评论 -
深入剖析Spring Web源码(五) - DispatcherServlet的实现之派遣器Servlet及其父类
派遣器Servlet及其父类上节我们介绍了Servlet容易规范中的HTTP Servlet的实现,它对于各种HTTP方法使用了占位符的实现,这些占位符方法需要子类进一步重写,这一小节中我们将讨论,派遣器Servet是如何实现这些占位符方法来完成Spring Web MVC的工作流的。下图是派遣器Servlet完整的实现体系, 从上面实现类图可以看到,继承自HTTP Servlet的直接...转载 2018-05-11 16:03:01 · 412 阅读 · 0 评论 -
深入剖析Spring Web源码(五) - DispatcherServlet的实现之根共享环境的加载/其他Servlet
根共享环境的加载上一节中我们在分析框架Sevlet是如何初始化Web应用程序环境的时候得知,一个Servlet拥有一个专用的子环境,但是这个子环境可以而且通常引用一个根共享环境,这个根共享环境是通过Servlet环境监听器加载的。也就是说,当一个Servlet环境,也就是一个应用程序被容器加载时,监听器通过监听这个初始化事件初始化根共享Web应用程序,而当一个Servlet环境析构时,监听器功...转载 2018-05-11 17:13:04 · 321 阅读 · 0 评论 -
SpringMVC启动过程详解
通过对SpringMVC启动过程的深入研究,期望掌握Java Web容器启动过程;掌握SpringMVC启动过程;了解SpringMVC的配置文件如何配置,为什么要这样配置;掌握SpringMVC是如何工作的;掌握Spring源码的设计和增强阅读源码的技巧。目录1.Web容器初始化过程 2.SpringMVC中web.xml配置 3.认识ServletContextListener...转载 2018-05-18 09:46:25 · 548 阅读 · 0 评论 -
Spring:源码解读Spring IOC原理
一、什么是Ioc/DI?IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等。 先从我们自己设计这样一个视角来考虑: 所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。 对象和对象关系怎么表示?可以用 xml ,...原创 2018-06-11 11:20:09 · 649 阅读 · 0 评论 -
spring源码深度解析---创建AOP代理之创建代理
创建代理在获取了所有对应bean的增强后,便可以进行代理的创建了。回到AbstractAutoProxyCreator的wrapIfNecessary方法中,如下图所示: 这里就是创建代码的代码,我们进入到方法内部:protected Object createProxy(Class<?> beanClass, @Nullable String beanName, ...原创 2018-04-25 11:23:13 · 1205 阅读 · 0 评论 -
spring源码深度解析---创建AOP代理之寻找匹配的增强器
寻找匹配的增强器前面的函数中已经完成了所有增强器的解析,但是对于所有增强器来讲,并不一定都适用于当前的Bean,还要挑取除适合的增强器,也就是满足我们配置的通配符的增强器。具体的实现在findAdvisorsThatCanApply中。我们回头看下AbstractAdvisorAutoProxyCreator中的findEligibleAdvisors方法,如下图所示: 这里使用了fin...原创 2018-04-25 11:21:27 · 316 阅读 · 0 评论 -
spring源码深度解析---Spring的整体架构和环境搭建
spring源码深度解析—Spring的整体架构和环境搭建1. 概述Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级...原创 2018-04-11 10:57:37 · 1763 阅读 · 2 评论 -
spring源码深度解析---bean的加载(下)
spring源码深度解析—bean的加载(下)我们继续接着之前的两篇bean的加载继续分析bean的实例创建1. 创建bean实例上面介绍了循环依赖还后置处理器处理的操作后接下来就到了创建bean的操作了,创建bean是在方法doCreateBean(beanName, mbdToUse, args)完成的,我们看下方法体:protected Object doCreateBe...原创 2018-04-17 14:59:01 · 1688 阅读 · 0 评论 -
spring源码深度解析—容器的基本实现
spring源码深度解析—容器的基本实现1. 概述分析源码是一件非常具有挑战性的工作,在正是分析spring的源码之前我们先来简单回顾下spring核心功能的简单使用2. 容器的基本用法bean是spring最核心的东西,spring就像是一个大水桶,而bean就是水桶中的水,水桶脱离了水也就没有什么用处了,我们简单看下bean的定义,代码如下:public class MyB...原创 2018-04-12 09:43:20 · 31921 阅读 · 0 评论 -
spring源码深度解析---默认标签解析(上)
spring源码深度解析—默认标签解析 1. 概述Spring的标签中有默认标签和自定义标签,两者的解析有着很大的不同,这次重点说默认标签的解析过程。 默认标签的解析是在DefaultBeanDefinitionDocumentReader.parseDefaultElement函数中进行的,分别对4种不同的标签(import,alias,bean和beans)做了不同处理。我们先看下此...原创 2018-04-12 15:02:15 · 1007 阅读 · 0 评论 -
spring源码深度解析---默认标签解析(下)
spring源码深度解析—默认标签解析(下)在spring源码深度解析—默认标签解析(上)中我们已经完成了从xml配置文件到BeanDefinition的转换,转换后的实例是GenericBeanDefinition的实例。而GenericBeanDefinition是AbstractBeanDefinition的子类,那我们优先看下AbstractBeanDefinition中的属性,代码如...原创 2018-04-12 17:01:14 · 379 阅读 · 0 评论 -
spring源码深度解析---自定义标签解析
spring源码深度解析—自定义标签解析1. 概述之前我们已经介绍了spring中默认标签的解析,解析来我们将分析自定义标签的解析,我们先回顾下自定义标签解析所使用的方法,如下图所示: 我们看到自定义标签的解析是通过BeanDefinitionParserDelegate.parseCustomElement(ele)进行的,解析来我们进行详细分析。2. 自定义标签的使用...原创 2018-04-13 11:53:18 · 692 阅读 · 0 评论 -
spring源码深度解析---bean的加载(上)
spring源码深度解析—bean的加载(上)1. 概述前面我们已经分析了spring对于xml配置文件的解析,接下来我们将对bean的加载进行探索。bean的加载比配置文件的解析要复杂的多。还记得我们在测试读取配置文件后获取bean用的方法吗?context.getBean(“testContructor”),如下所示,这段代码具体实现了什么功能呢?接下来我们将详细分析下。publi...原创 2018-04-13 16:36:20 · 2243 阅读 · 1 评论 -
spring源码深度解析---容器的功能扩展(上)
spring源码深度解析—容器的功能扩展(上)在之前的博文中我们一直以BeanFactory接口以及它的默认实现类XmlBeanFactory为例进行分析,但是Spring中还提供了另一个接口ApplicationContext,用于扩展BeanFactory中现有的功能。 ApplicationContext和BeanFactory两者都是用于加载Bean的,但是相比之下,Applicat...原创 2018-04-19 14:39:56 · 1113 阅读 · 2 评论 -
spring源码深度解析---容器的功能扩展(下)
spring源码深度解析—容器的功能扩展(下)接容器的功能扩展(上)6. BeanFactory的后处理BeanFactory作为spring中容器功能的基础,用于存放所有已经加载的bean,为例保证程序上的高可扩展性,spring针对BeanFactory做了大量的扩展,比如我们熟悉的PostProcessor就是在这里实现的。接下来我们就深入分析下BeanFactory后处理...原创 2018-04-20 10:33:56 · 448 阅读 · 0 评论 -
spring源码深度解析---AOP:动态AOP使用
spring源码深度解析—AOP:动态AOP使用我们知道在面向对象OOP编程存在一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为时,例如日志,安全检测等,我们只有在每个对象里引入公共行为,这样程序中就产生了大量的重复代码,所以有了面向对象编程的补充,面向切面编程(AOP),AOP所关注的方向是横向的,不同于OOP的纵向。接下来我们就详细分析下spring中的AOP。首先我们从动态A...原创 2018-04-20 11:30:00 · 582 阅读 · 0 评论 -
spring源码深度解析---AOP:动态AOP自定义标签
spring源码深度解析—AOP:动态AOP自定义标签之前讲过Spring中的自定义注解,如果声明了自定义的注解,那么就一定会在程序中的某个地方注册了对应的解析器。我们搜索这个代码,尝试找到注册的地方,全局搜索后我们发现了在org.springframework.aop.config包下的AopNamespaceHandler中对应着这样一段函数:@Overridepublic void...原创 2018-04-20 14:46:32 · 293 阅读 · 0 评论 -
spring源码深度解析---创建AOP代理之获取增强器
spring源码深度解析—创建AOP代理之获取增强器在上一篇的博文中我们讲解了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类到底做了什么工作来完成AOP的操作呢?首先我们看看AnnotationAwareAspectJAutoProxyCreator的层次结构,如下图所示: 从上图的类层次结构图中我们看到这个类...原创 2018-04-25 10:57:00 · 474 阅读 · 1 评论 -
Spring 框架的设计理念与设计模式分析
1. Spring 的骨骼架构Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总体架构图:Spring 框架的总体架构图 从上图中可以看出 Spring 框架中的核心组件只有三个:Core、Context 和 Beans。它们构建起了整个 Spring 的骨骼架构。没有它们就不可能有 AOP、Web 等上层的特性功能。下面也将主要从这三个组件入手分...原创 2018-05-28 16:02:29 · 580 阅读 · 0 评论