Spring 源码三千问
文章平均质量分 93
存放 Spring 的使用技巧、可利用 API、最佳实践等
老王学源码
这个作者很懒,什么都没留下…
展开
-
【SpringMVC源码三千问】@RequstMapping和RequestCondition
是 SpringMVC 中最常用的定义请求映射关系的注解。下面我们来分析一下它的源码。原创 2023-05-24 19:45:46 · 1171 阅读 · 0 评论 -
【SpringMVC源码三千问】DispatcherServlet源码解析
是 SpringMVC 处理请求分发的方法,只要是 spring mvc 处理的 http 请求,都会经过 DispatcherServlet 的请求分发处理,从而调用相应的 handler method。原创 2023-04-25 20:54:44 · 569 阅读 · 0 评论 -
【Spring事物三千问】DataSource的设计和常用实现——Hikari、Druid
AbstractRoutingDataSource 是 Spring 对 DataSource 的抽象实现。它是一个基于 lookup key ,将的调用路由到目标数据源的抽象数据源实现。通常都是通过 ThreadLocal 绑定的事务上下文变量来确定路由到哪个目标数据源。是 AbstractRoutingDataSource 的实现类,它是一个能基于当前事务隔离级别路由到目标数据源的 DataSource 数据源。原创 2023-03-22 11:35:11 · 1085 阅读 · 0 评论 -
【Spring事物三千问】Spring配置多数据源 vs 给多个数据源添加事物管理
在 Spring 中配置多数据源 与 给多个数据源添加事物管理是有区别的。如果只需要使用到多个数据源,而不需要进行事物管理,是可以进行简单处理的。原创 2023-03-21 10:27:54 · 366 阅读 · 0 评论 -
【Spring 源码三千问】同样是AOP代理bean,为什么@Async标记的bean循环依赖时会报错?
前面在分析那么,为什么同样是 AOP 代理 bean,差别就这么大呢?原创 2023-03-08 18:56:49 · 246 阅读 · 0 评论 -
【Spring事物三千问】DataSource的设计和常用实现——Hikari、Druid
AbstractRoutingDataSource 是 Spring 对 DataSource 的抽象实现。它是一个基于 lookup key ,将的调用路由到目标数据源的抽象数据源实现。通常都是通过 ThreadLocal 绑定的事务上下文变量来确定路由到哪个目标数据源。是 AbstractRoutingDataSource 的实现类,它是一个能基于当前事务隔离级别路由到目标数据源的 DataSource 数据源。原创 2023-03-08 12:36:13 · 1843 阅读 · 0 评论 -
【Spring事物三千问】Spring的事务管理与MyBatis事物管理结合的原理
spring-tx 是一套事务管理框架。Mybatis 是一个 ORM 框架,它会操作 DB 连接来执行 sql,所以,也会涉及到事务的处理。在 MyBatis 中,是通过 SqlSession 来执行 sql 的,也是通过它来管理事务的。默认情况下,MyBatis 是开启事务的,即:那么,spring-tx 的事务管理是如何与 mybatis 的事务管理进行整合的呢?原创 2023-02-28 12:50:08 · 1486 阅读 · 0 评论 -
【Spring事物三千问】如何快速判断Spring项目中的事务是否生效?
如果 Spring 的事务没有生效,很有可能导致严重的生产问题,自己的能力也会受到组员和领导的质疑。那么,刚接手一个新项目,或者搭建了一个新项目,如何快速的判断我们的事务配置是否生效?原创 2023-02-27 10:05:54 · 1633 阅读 · 0 评论 -
【Spring源码三千问】@Lazy的替代者ObjectFactory 和 ObjectProvider
Lazy 可以解决某些特殊场景下的循环依赖问题。在翻阅 @Lazy 的源码注释时,得知 @Lazy 可以通过 ObjectFactory 和 ObjectProvider 来进行替代。下面我们就来看看ObjectFactory 和 ObjectProvider的原理和使用吧…@Lazy为什么可以解决特殊的循环依赖问题@Lazy延迟加载与延迟注入有什么区别。...原创 2022-08-08 19:58:03 · 615 阅读 · 0 评论 -
【Spring源码三千问】ApplicationContext 与 BeanFactory 的作用是什么?它们有什么区别?
ApplicationContext 与 BeanFactory 的作用是什么?它们有什么区别?前言版本约定正文BeanFactoryHierarchycalBeanFactoryDefaultListableBeanFactoryApplicationContextApplicationContext vs BeanFactory小结SpringIoC源码视频讲解:前言我们在讲 Spring 容器器,通常指的是 Spring IoC 容器。跟 Spring IoC 容器相关的类、接口有 BeanFa原创 2022-02-23 11:11:33 · 690 阅读 · 0 评论 -
【Spring源码三千问】@Lazy延迟加载与延迟注入有什么区别?
@Lazy延迟加载与延迟注入有什么区别?@Lazy 标记在 @Autowired/@Resource 注入的属性上,或者对应的 bean 类上,都可以解决循环依赖报错的问题。 那么,不同的使用方式有什么区别呢?会带来什么样不同的效果呢?原创 2022-01-03 14:39:26 · 2624 阅读 · 1 评论 -
【Spring 源码三千问】同样是AOP代理bean,为什么@Async标记的bean循环依赖时会报错?SmartInstantiationAwareBeanPostProcessor解析
同样是AOP代理bean,为什么@Async标记的bean不能被循环依赖?前言版本约定正文SmartInstantiationAwareBeanPostProcessor非 SmartInstantiationAwareBeanPostProcessor 生产代理的情况小结【老王读Spring AOP-0】SpringAop引入&&AOP概念、术语介绍【老王读Spring AOP-1】Pointcut如何匹配到 join point【老王读Spring AOP-2】如何为 Pointc原创 2021-12-29 19:45:34 · 723 阅读 · 0 评论 -
【Spring源码三千问】Spring AOP 中 AbstractAdvisorAutoProxyCreator、AbstractAdvisingBeanPostProcessor的区别
产生AOP代理类的两种BeanPostProcessor对比: AbstractAdvisorAutoProxyCreator vs AbstractAdvisingBeanPostProcessor 前言版本约定正文AutoProxyCreator: AbstractAdvisorAutoProxyCreatorAbstractAdvisingBeanPostProcessorAbstractAdvisorAutoProxyCreator 与 AbstractAdvisingBeanPostProces原创 2021-11-30 11:30:46 · 815 阅读 · 0 评论 -
【Spring源码三千问】没有AspectJ,Spring中如何使用SpringAOP、@Transactional?
没有AspectJ,Spring中如何使用SpringAOP、@Transactional前言正文为什么不加 @EnableAspectJAutoProxy 也能使用 @Transactional ?Spring 风格的 AOP : 定义 PointcutAdvisor 来使用 Spring AOP 功能Spring xml 方式定义 AdvisorSpring @Bean 方式定义 Advisor@EnableAspectJAutoProxy 的作用是什么?AutoProxyCreator 自动代理创建者原创 2021-11-19 19:57:47 · 1523 阅读 · 2 评论 -
【Spring源码三千问】Advice、Advisor、Advised都是什么接口?
Advice、Advisor、Advised都是什么接口?前言版本约定正文Advice、Advisor、Advised 类图AdviceMethodInterceptorAdvisorPointcutAdvisorAdvisedSpring AOP 代理类可以转换为 Advised 类型小结系列博文:【老王读Spring AOP-0】SpringAop引入&&AOP概念、术语介绍【老王读Spring AOP-1】Pointcut如何匹配到 join point【老王读Spring A原创 2021-11-02 14:23:08 · 5510 阅读 · 1 评论 -
【Spring源码三千问】Spring动态代理:什么时候使用的 cglib,什么时候使用的是 jdk proxy?
Spring动态代理:什么时候使用的 cglib,什么时候使用的是 jdk proxy?前言版本约定正文例子测试结论分析proxyTargetClass 标识的校正哪些接口不是 ReasonableProxyInterface小结前言前面分析 Spring AOP 是如何为 Pointcut 匹配的类生成代理类时,提到 spring 使用 cglib 还是 jdk proxy 来生成动态代理是由两个因素共同决定的:第一个因素是 targetClass 的类型(接口 or 实体类);第二个因素是 p原创 2021-10-28 12:44:20 · 1564 阅读 · 0 评论 -
【Spring源码三千问】Bean的Scope有哪些?scope=request是什么原理?
Bean的Scope有哪些?scope=request是什么原理?前言版本约定正文Scope 接口的类图Scope 生效的地方scope=request 的原理scope=request 用法举例自定义 scope小结系列博文:【老王读Spring IoC-0】Spring IoC 引入【老王读Spring IoC-1】IoC 之控制反转引入【老王读Spring IoC-2】IoC 之 BeanDefinition 扫描注册【老王读Spring IoC-3】Spring bean 的创建过程【老原创 2021-10-14 16:18:33 · 2223 阅读 · 0 评论 -
【Spring源码三千问】BeanDefinition注册、Bean注册、Dependency注册有什么区别?
BeanDefinition注册、Bean注册、Dependency注册的区别前言版本约定正文registerBeanDefinition(BeanDefinition 的注册)常用 APIBeanDefinitionBuilderGenericApplicationContext#registerBeanDefinition()registerResolvableDependency(Dependency 注册)registerBean(通过 class 注册 Bean)registerSingleton原创 2021-10-11 09:36:01 · 1421 阅读 · 0 评论 -
【Spring源码三千问】为什么要用三级缓存来解决循环依赖问题?二级缓存行不行?一级缓存行不行?
前言前面的文章 中,我们分析了 Spring 是怎样使用三级缓存来解决循环依赖的。那么,Spring 为什么要用三级缓存来解决循环依赖问题呢?如果只用二级缓存行不行?只用一级缓存呢?凡事多问几个为什么,理解问题会更加透彻版本约定Spring 5.3.9 (通过 SpringBoot 2.5.3 间接引入的依赖)正文Spring 做为一个优秀的框架,在设计上肯定有很多的思考。所以,我们猜想如果减少缓存应该是不能达到目的的。想要证明这个结论,我们只需要各举一个反例就行。分析:如果只使用一级原创 2021-10-08 16:49:03 · 3660 阅读 · 18 评论 -
【Spring源码三千问】@Lazy原理分析——它为什么可以解决特殊的循环依赖问题?
@Lazy原理分析——它为什么可以解决特殊的循环依赖问题前言版本约定正文小结彩蛋:系列博文:【老王读Spring IoC-0】Spring IoC 引入【老王读Spring IoC-1】IoC 之控制反转引入【老王读Spring IoC-2】IoC 之 BeanDefinition 扫描注册【老王读Spring IoC-3】Spring bean 的创建过程【老王读Spring IoC-4】IoC 之依赖注入原理【老王读Spring IoC-5】Spring IoC 小结——控制反转、依赖注入原创 2021-10-01 14:10:32 · 4324 阅读 · 7 评论 -
【Spring源码三千问】哪些循环依赖问题Spring解决不了?
哪些循环依赖问题Spring解决不了?前言版本约定正文场景一: prototype 类型的循环依赖场景二: constructor 注入的循环依赖场景三:Proxy 类型的 Bean 的循环依赖小结系列博文:【老王读Spring IoC-0】Spring IoC 引入【老王读Spring IoC-1】IoC 之控制反转引入【老王读Spring IoC-2】IoC 之 BeanDefinition 扫描注册【老王读Spring IoC-3】Spring bean 的创建过程【老王读Spring I原创 2021-09-29 13:03:27 · 6670 阅读 · 0 评论 -
【Spring源码三千问】Spring 是怎样解决循环依赖问题的?三级缓存的作用是什么?
Spring 是怎样解决循环依赖的?前言正文准备例子循环依赖过程分析结合 bean 的创建过程来分析一下缓存的使用情况小结系列博文:【IoC-0】Spring IoC 引入【IoC-1】IoC 之控制反转引入【IoC-2】IoC 之 BeanDefinition 扫描注册【IoC-3】Spring bean 的创建过程【IoC-4】IoC 之依赖注入原理【IoC-5】Spring IoC 小结——控制反转、依赖注入相关阅读:@Resource 与 @Autowired 的区别bean n原创 2021-09-28 10:10:43 · 1279 阅读 · 4 评论 -
【Spring源码三千问】BeanDefinition详解——什么是 RootBeanDefinition?merged bean definition 又是什么鬼?
BeanDefinition详细分析前言正文RootBeanDefinitionGenericBeanDefinitionChildBeanDefinitionmerged bean definition小结系列博文:【IoC-0】Spring IoC 引入【IoC-1】IoC 之控制反转引入【IoC-2】IoC 之 BeanDefinition 扫描注册【IoC-3】Spring bean 的创建过程【IoC-4】IoC 之依赖注入原理【IoC-5】Spring IoC 小结——控制反转、依原创 2021-09-06 13:06:34 · 3627 阅读 · 0 评论 -
【Spring源码三千问】从源码分析@Resource与@Autowired的区别——到底是按 type 注入,还是按 name 注入?
@Resource与@Autowired的区别前言版本约定正文准备工作正式开始@Resource 注入规则的源码分析@Autowired 注入规则的源码分析总结前言从我们接触 Spring 起,就开始使用它的自动注入功能。最常用的注解有: @Autowired、@Resource我们经常听说 @Autowired 优先按类型注入,其次再按 name 注入。而 @Resource 则正好相反,它优先按 name 注入,其次再按 type 注入。真的是这样吗?怎么从源码的角度来进行解释?javax.原创 2021-08-25 12:56:36 · 1938 阅读 · 1 评论 -
【Spring源码三千问】Spring bean name的生成规则——真的是类名首字母小写吗?
Spring bean name的生成规则前言正文扩展: @Bean 定义的 bean 的 name 是什么生成规则?小结系列博文:【IoC-0】Spring IoC引入【IoC-1】IoC之控制反转引入【IoC-2】IoC之BeanDefinition扫描注册【IoC-3】IoC之依赖注入相关阅读:@Resource与@Autowired的区别前言以前总认为 bean name 的生成规则就是类名的首字母小写。直到我遇到了下面的问题之后,我发现 bean name 的生成规则没有这么简原创 2021-08-27 12:31:38 · 3117 阅读 · 0 评论 -
spring循环依赖
spring原创 2014-03-19 00:24:29 · 313 阅读 · 0 评论