1. 背景 注解可以减少代码的开发量,spring提供了丰富的注解功能.我们可能会被问到,spring的注解到底是什么触发的呢?今天以spring最常使用的一个注解autowired来跟踪代码,进行debug. 2. Autowired的定义及作用 作用:Marks a constructor, field, setter method or config method as to be autowired by Spring's dependency injection facilities.…
Spring Ioc源码分析系列--@Autowired注解的实现原理 前言 前面系列文章分析了一把Spring Ioc的源码,是不是云里雾里,感觉并没有跟实际开发搭上半毛钱关系?看了一遍下来,对我的提升在哪?意义何在?如果没点收获,那浪费时间来看这个作甚,玩玩游戏不香? 这段玩笑话可不是真的玩笑,提升需要自己去把握,意义也需要自己去挖掘.纸上得来终觉浅,绝知此事要躬行.最好是跟着代码调试一遍才会留下自己的印象,这过程收获的会比你想象中的要多.看山是山,看水是水.看山不是山,看水不是水.看山还是…
一.背景 前面详解了实现Spring事务的两种方式的不同实现:编程式事务和声明式事务,对于配置都使用到了xml配置,今天介绍Spring事务的注解开发,例如下面例子: 配置类:注册数据源.JDBC模板.事务管理器 //包扫描,将包下的dao.service注册到Spring容器中 @ComponentScan("com.hrh") //开启基于注解的事务管理,跟@Transactional注解配套使用 @EnableTransactionManagement //表明TxConfig是…
在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫描的过滤规则.那我们今天就来看下包扫描的具体过程. 还是先看下面的代码: AnnotationConfigApplicationContext类 //该构造函数会自动扫描以给定的包及其子包下的所有类,并自动识别所有的Spring Bean,将其注册到容器中 public AnnotationConf…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 如果该篇内容对您有帮助,麻烦点击一下"推荐",也可以关注博主,感激不尽~ 该系列其他文章请查看:<精尽 Spring B…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 如果该篇内容对您有帮助,麻烦点击一下"推荐",也可以关注博主,感激不尽~ 该系列其他文章请查看:<精尽 Spring B…
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题. 阅读建议:读者至少需要知道怎么配置 Spring,了解 Spring 中的各种概念,少部分内容我还假设读者使用过 SpringMVC.本文要说的 IOC 总体来…
概述 spring security 源码分析系列文章. 源码分析 我们想一下,我们使用 ss 框架的步骤是怎么样的. @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private MyUserDetailsService myUserDetailsService;…
spring事务源码分析 1. 事务的初始化注册(从 @EnableTransactionManagement 开始) @Import(TransactionManagementConfigurationSelector.class)public @interface EnableTransactionManagement { 跟进这个 TransactionManagementConfigurationSelector 类 发现这个类是通过 Selector 引入的, 学过spring容器初始…
Spring Ioc源码分析系列--Bean实例化过程(二) 前言 上篇文章Spring Ioc源码分析系列--Bean实例化过程(一)简单分析了getBean()方法,还记得分析了什么吗?不记得了才是正常的,记住了才是怪人,忘记了可以回去翻翻,翻不翻都没事, 反正最后都会忘了. 这篇文章是给上篇填坑的,上篇分析到真正创建Bean的createBean(beanName, mbd, args)就没有继续深入去分析了,绕得太深,说不清楚.那么这一篇,就续上这个口子,去分析createBean(be…
Spring Ioc源码分析系列--自动注入循环依赖的处理 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到Spring创建bean出现循环依赖的时候并没有深入去分析了,而是留到了这一篇去分析.为什么要另起一篇,首先循环依赖是个很经典的问题,也是面试屡屡被问到的问题,就这一点,就值得再起一篇.其次,循环依赖相对来说较为复杂,如果想要完全理解Spring解决循环依赖的设计思想需要对Spring有比较整体的认知,这里要理清思路最好是新开一篇去写. Spring循环…
社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ.人人网.开心网.新浪微博.搜狐微博.腾讯微博.淘宝.豆瓣.MSN.Google等社会化媒体账号登录该网站. 前言 在上一章Spring-Security源码分析三-Spring-Social社交登录过程中,我们已经实现了使用 SpringSocial+ Security的QQ社交登录.本章我们将实现微信的社交登录.(微信和QQ登录的大体流程相同,但存在一些细节上的差异,下面我们来简单实现一下) 准备工作 熟悉O…
1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析.本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor).在上一篇AOP 源码分析导读一文中,我简单介绍了 AOP 中的一些术语及其对应的源码,部分术语和源码将会在本篇文章中出现.如果大家不熟悉这些术语和源码,不妨去看看. 关于 Spring AOP,我个人在日常开发中用过一些,也参照过 tiny-spring 过写过一个玩…
AOP代理对象的创建 AOP相关的代理对象的创建主要在applyBeanPostProcessorsBeforeInstantiation方法实现: protected Object applyBeanPostProcessorsBeforeInstantiation(Class<?> beanClass, String beanName) { for (BeanPostProcessor bp : getBeanPostProcessors()) { // 查找实现了Instantiatio…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 寻找遗失的 web.xml 在开始 Spring MVC 的分析之前,先来聊一聊 Java 初学者接触的最多的 Java Web 基础.还记得我的第一个 Web 工程是由 Servlet.Velocity 和 Filter 来完成的,那时几乎所有人都是根据 Servlet.JSP…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerMapping 组件 HandlerMapping 组件,请求的处理器匹配器,负责为请求找到合适的 HandlerExecutionChain 处理器执行链,包含处理器(handler)…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerMapping 组件 HandlerMapping 组件,请求的处理器匹配器,负责为请求找到合适的 HandlerExecutionChain 处理器执行链,包含处理器(handler)…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerMapping 组件 HandlerMapping 组件,请求的处理器匹配器,负责为请求找到合适的 HandlerExecutionChain 处理器执行链,包含处理器(handler)…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerMapping 组件 HandlerMapping 组件,请求的处理器匹配器,负责为请求找到合适的 HandlerExecutionChain 处理器执行链,包含处理器(handler)…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerAdapter 组件 HandlerAdapter 组件,处理器的适配器.因为处理器 handler 的类型是 Object 类型,需要有一个调用者来实现 handler 是怎么被执行.…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerAdapter 组件 HandlerAdapter 组件,处理器的适配器.因为处理器 handler 的类型是 Object 类型,需要有一个调用者来实现 handler 是怎么被执行.…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerAdapter 组件 HandlerAdapter 组件,处理器的适配器.因为处理器 handler 的类型是 Object 类型,需要有一个调用者来实现 handler 是怎么被执行.…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerAdapter 组件 HandlerAdapter 组件,处理器的适配器.因为处理器 handler 的类型是 Object 类型,需要有一个调用者来实现 handler 是怎么被执行.…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> HandlerExceptionResolver 组件 HandlerExceptionResolver 组件,处理器异常解析器,将处理器( handler )执行时发生的异常(也就是处理请求,执行方…
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2.4.RELEASE 该系列其他文档请查看:<精尽 Spring MVC 源码分析 - 文章导读> RequestToViewNameTranslator 组件 RequestToViewNameTranslator 组件,视图名称转换器,用于解析出请求的默认视图名.就是说当 ModelAndVie…
目标: 1. 什么是AOP, 什么是AspectJ 2. 什么是Spring AOP 3. Spring AOP注解版实现原理 4. Spring AOP切面原理解析 一. 认识AOP及其使用 详见博文1: 5.1 Spring5源码--Spring AOP源码分析一 二. AOP的特点 2.1 Spring AOP 2.1.1 他是基于动态代理实现的 Spring 提供了很多的实现AOP的方式:Spring 接口方式,schema配置方式和注解的方式. 如果使用接口方式引入AOP, 就是用JD…
目标: 1. 什么是AOP, 什么是AspectJ 2. 什么是Spring AOP 3. Spring AOP注解版实现原理 4. Spring AOP切面原理解析 一. 认识AOP及其使用 详见博文1: 5.1 Spring5源码--Spring AOP源码分析一 二. AOP的特点 2.1 Spring AOP 2.1.1 他是基于动态代理实现的 Spring 提供了很多的实现AOP的方式:Spring 接口方式,schema配置方式和注解的方式. 如果使用接口方式引入AOP, 就是用JD…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 如果该篇内容对您有帮助,麻烦点击一下"推荐",也可以关注博主,感激不尽~ 序言 前面一系列的文章对 MyBatis.Sprin…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 <精尽 Spring Boot 源码分析 - 序言> <精尽 Spring Boot 源码分析 - Jar 包的启动实现>…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 如果该篇内容对您有帮助,麻烦点击一下"推荐",也可以关注博主,感激不尽~ 该系列其他文章请查看:<精尽 Spring B…