spring技术内幕
SmilngCobra
To be an architect
展开
-
SpringFramework的核心:IOC容器的实现------ApplicationContext的特点以及Bean的Resource定位
上次我解释了关于BeanFactory的一些功能。那么以BeanFactory的一个实现类为例,我们来看一下BeanFactory的工作原理。private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);public XmlBeanFactory(Resource resource) ...原创 2018-09-04 20:30:09 · 144 阅读 · 0 评论 -
Spring AOP的实现:知识框架总结
通过对于这本图书的学习,我发现其实关于每一个部分的代码的解析不是按照AOP的具体实现流程来进行,而是通过对于某一个模块的解析来模块化地讲解知识。所以在新手比如我在学习的过程中,会有很多很多疑惑的地方。所以当我学完这一章之后,我希望通过画一张图,来解析整个AOP的实现流程。首先我们先画一个最基本的数据结构,也就是我的博客中提到的三个类 这三个数据结构贯穿了AOP的始终。是AOP实现加强的...原创 2018-10-25 21:09:00 · 228 阅读 · 0 评论 -
Spring事务处理的实现: Spring与事务
通过对于书上代码的学习和了解,本书并没有将事务最底层的实现完全展现出来。因为这是涉及到很复杂的操作系统的一些操作,比如对于线程的管理,以及ThreaLocal变量的一些维护等等。这些可以说对我们这些用户是不可见的。书上的代码只是将整个执行的流程给我们展现了出来,让我们可以比较清晰地看到整个实现的过程。在讲解代码之前,我觉得有必要对事务的一些基本知识进行一下解释,虽然我们对事务的概念已经很熟悉了...原创 2018-10-25 21:57:55 · 186 阅读 · 0 评论 -
Spring AOP的实现:拦截器链的生成以及Advice通知的实现
拦截器链的获取生成上一次我说到了拦截器链的获取,拦截器链的获取以及生成是从一个DefaultAdvisorChainFactory类中得到的。我们来看一下具体的实现代码public List<Object> getInterceptorsAndDynamicInterceptionAdvice( Advised config, Method method, Class&...原创 2018-10-21 20:55:35 · 915 阅读 · 3 评论 -
Spring事务处理的实现:事务处理配置的读入以及事务处理拦截器的实现
事务处理配置的读入上次说到AOP配置已经完成,下面我们来讲述一下关于具体的事务属性配置是如何读入的。书上所述为在TransactionProxyFactoryBean中,以TransactionAttributeSourceAdvisor的实现为入口,了解具体的事务属性配置是如何被读入的。这个是我们已经见过的拦截器private TransactionInterceptor tran...原创 2018-10-26 19:53:16 · 371 阅读 · 0 评论 -
Spring事务处理的实现:Spring事务总结
这篇我想对Spring事务机制进行一次总结,总结的方式也和AOP类似那就是使用图解的方式。首先我们需要对我们事务的AOP机制进行初始化,也就是声明要对那些方法(切面)进行增强,这里涉及到了TransactionInterceptor拦截器链的生成。接着书上讲述了事务处理配置的读入。在拦截器链被设置到对象中之后,书上以 TransactionAttributeSourceAdvisor的...原创 2018-10-30 17:35:24 · 220 阅读 · 0 评论 -
Spring MVC与Web环境(一):IOC容器在Spring MVC中的启动
在原书的阅读中我们可以看到,Spring并不是天生就能在Web容器中起作用的。我们同样需要把我们的IoC容器手动添加到Web容器中,也就是在web.xml文件中配置一些基础的类比如DispatcherServlet,ContextLoaderListener这些我们熟悉的类。当这些类的配置完成之后,启动tomcat。就会在IoC容器中生成这些处理我们请求的bean。在Dis...原创 2018-11-06 18:22:09 · 319 阅读 · 0 评论 -
Spring MVC与Web环境(三):HandlerMapping的配置以及处理请求
在上一篇的博客中,我提到了关于HandlerMapping的作用。在原书中作者是这样定义它的。每一个HandlerMapping可以持有一系列从URL请求到Controller的映射。在每一个HandlerMapping中都定义了一个map来持有这一系列的映射关系。在这个方法的定义中,通过解析request请求获取其中请求的URL路径,然后找到对应的handler对象,将这个对象封装到Handle...原创 2018-11-09 17:57:11 · 628 阅读 · 0 评论 -
Spring MVC与Web环境(二):Spring MVC的启动以及初始化
ContextLoader在初始化完成以后,Web容器就开始初始化DispatcherServlet,这个初始化的启动与在web.xml中对载入次序进行的定义有关。DipatcherServlet会建立自己的上下文来持有Spring MVC的Bean对象。这个建立对象的过程和ContexLoader是类似的,都是通过声明好的xml文件来注册声明好的bean对象。现在我们来具体看一下关于Dispat...原创 2018-11-07 20:21:13 · 172 阅读 · 0 评论 -
Spring事务处理的实现:事务处理的实现
目录 事务处理的编程式使用声明式事务事物的创建事务的挂起事务的提交事务的回滚具体事务处理器的实现事务处理的编程式使用 书上首先给出了事务处理的编程式使用之后书上为我们解释了Spring框架对事务处理的统一管理,以及对并发事务和事务属性的处理。声明式事务事物的创建书上的代码中我们可以从invoke方法中找到事务创建方法@Ov...原创 2018-10-28 21:25:20 · 582 阅读 · 0 评论 -
Spring AOP的实现:Spring AOP拦截器调用的实现
上次我说到关于ProxyFactoryBean对象的getObject方法返回了一个代理对象。剩下的AOP实现过程就和jdk的代理模式相同。通过调用这个代理对象的方法(这个方法和目标对象是相同的),但是实际上是调用了invoke方法,通过反射来实现方法的增强。关于jdk如何实现代理模式的反编译,底层的代码实现过程可以在这个博客中查看https://blog.csdn.net/u013815...原创 2018-10-20 17:44:14 · 838 阅读 · 0 评论 -
SpringFramework的核心:IOC容器的实现------BeanDefinition的载入
上一次我已经讲述了如何定位BeanDefinition的Resource资源,那么现在我想继续讲述一下如何载入这些资源。关于上节课的具体内容,我画了一个简图在org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(XmlBeanDefinitionReader)中是这...原创 2018-09-08 11:25:52 · 143 阅读 · 0 评论 -
SpringFramework的核心:IOC容器的实现------Spring IOC容器概述
之前在刚开始学习的时候,我曾经尝试过研究《Spring技术内幕》这本书,但是由于当时的经验以及知识储备不足。导致我没有很好地完成阅读这本书,这本书是对于spring源码的很好的分析。所以现在在我已经学完spring之后我想回顾一下,重新审视spring,从底层的角度更好地了解这个框架。 我曾经写过一篇关于spring ioc容器的文章,但是当时对于spring的理...原创 2018-09-03 17:20:22 · 321 阅读 · 1 评论 -
SpringFramework的核心:IOC容器的实现------BeanDefinition在IoC容器中的注册
之前分析了关BeanDefinition在IoC容器中的载入和解析的过程。但这些动作完成之后,用户定义的BeanDefinition信息已经在IoC容器中建立起了自己的数据结构以及相应的数据表示,但此时这些数据还不能让IoC容器直接使用,需要在IoC容器中对这些BeanDefinition数据进行注册。在DefaultListableBeanDefinition中,是通过一个HashMap来持有载...原创 2018-09-19 21:12:10 · 164 阅读 · 0 评论 -
SpringFramework的核心:IOC容器的实现------IoC容器的依赖注入
如果IoC容器已经载入了用户定义的Bean信息,并开始分析依赖注入的原理。依赖注入是用户第一次向IoC容器索要Bean时触发的,当然也有例外。如果我们设置了lazy-init的属性。是可以在刚开始初始化容器的时候就为我们生成新的bean。首先我们从DefaultListableBeanFactory类中来查看getBean触发的依赖注入org.springframework.beans.f...原创 2018-10-12 00:06:45 · 160 阅读 · 0 评论 -
Spring AOP的实现:AOP基本概念
Spring AOP的概述目录 AOP的概念Java动态代理Spring AOP代码举例 AOP的概念 AOP的概念: Aspect-Oriented Programming(面向切面编程)的简称。用来描述分散在对象,类或函数中的横切面。 这也是为什么我们称它为面向切面编程,它是横向的,就像在一个业务逻辑横切一刀。对于...原创 2018-10-13 11:54:17 · 263 阅读 · 0 评论 -
Spring AOP的实现:三个基本属性类的实现和解析
在深入了解AOP的实现原理之前,我们需要先了解一下关于AOP的三个基本的属性类。PointCut切点, Advice通知, Advistor通知器。 Advice通知首先来看一下Advice通知以及它的作用Advice,定义了在连接点对连接点进行怎样的增强操作。通过这个接口,对AOP的切面的增强进行进一步的划分。比如BeforeAdvice , AfterAdvice, ...原创 2018-10-18 18:53:19 · 837 阅读 · 0 评论 -
SpringFramework的核心:IOC容器的实现------Bean的Resource定位一些细节补充
之前在学习关于BeanDefinition的载入的时候,在书上看到了这样的两段代码。org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(XmlBeanDefinitionReader)protected void loadBeanDefinitions(XmlBeanD...原创 2018-10-09 17:07:38 · 102 阅读 · 0 评论 -
Spring AOP的实现:建立AopProxy代理对象
前面我们讲述了AOP的基本知识以及在Spring AOP机制中的一些基本的数据结构及其功能。下面开始正式的讲述Spring AOP的实现部分。来看一下这个以ProxyFactory为中心的继承关系图可以将ProxyConfig看做是一个数据基类,这个基类为ProxyFactoryBean这样的子类提供了属性的配置。而AdvisedSupport则是实现了对于通知...原创 2018-10-20 13:54:55 · 396 阅读 · 0 评论 -
Spring MVC与Web环境(四):SpringMVC对HTTP请求的分发处理
这一段时间一直在看关于算法部分的书籍,所以始终没来的及更新自己的博客。之前就已经看完了Spring MVC的全部文章,今天就更新完我的关于Spring源码学习的最后一篇文章。1.大体流程上次说到了关于handler(也就是Controller层对象的获取),那么服务器是根据用户请求的url来进行确认访问某一个HandlerMapping取出其中的handler对象以及相应的拦截器链,但是这...原创 2018-11-29 17:54:57 · 541 阅读 · 0 评论