Spring 中一个少见的引介增强 IntroductionAdvisor

我们平时做 AOP 开发的时候,基本上都是增强某一个方法,在某一个方法执行之前或者执行之后做一些事情,这种叫做 PointcutAdvisor,实际上,Spring 中的 Advisor 大致可以分为两种类型,除了 PointcutAdvisor 之外,还有另外一种 Advisor 叫做 IntroductionAdvisor,因为最近想和小伙伴们聊一聊 Spring AOP 的源码,看源码有一个前提就是得先掌握 Spring 的各种用法,这样看源码的时候往往就有一种醍醐灌顶的感觉,否则看源码的时候就容易懵!

阅读更多

玩一玩编程式 AOP

[TOC]

平时我们项目中涉及到 AOP,基本上就是声明式配置一下就行了,无论是基于 XML 的配置还是基于 Java 代码的配置,都是简单配置即可使用。声明式配置有一个好处就是对源代码的侵入小甚至是零侵入。不过今天松哥要和小伙伴们聊一聊编程式的 AOP,为什么要聊这个话题呢?因为在 Spring 源码中,底层就是通过这种方式创建代理对象的,所以如果自己会通过编程式的方式进行 AOP 开发,那么在看 Spring 中相关源码的时候,就会很好理解了。

阅读更多

如何通过三级缓存解决 Spring 循环依赖

以下内容基于 Spring6.0.4。

这个其实是一个特别高频的面试题,松哥也一直很想和大家仔细来聊一聊这个话题,网上关于这块的文章很多,但是我一直觉得要把这个问题讲清楚还有点难度,今天我来试一试,看能不能和小伙伴们把这个问题梳理清楚。

阅读更多

用 Spring 管理 Controller,你觉得可行吗?

以下内容基于 Spring6.0.4。

上篇文章和小伙伴们聊了 Spring 容器中的父子容器问题,也和小伙伴们梳理了 Spring 容器和 SpringMVC 容器之间的关系,其中,Spring 容器是父容器,SpringMVC 是子容器,子容器可以访问父容器中的 Bean,但是父容器无法访问子容器中的 Bean。

阅读更多

Spring 中的父子容器是咋回事?

[TOC]

以下内容基于 Spring6.0.4。

相信有小伙伴也听说过,在 SSM 项目中,Spring 容器是父容器,SpringMVC 是子容器,子容器可以访问父容器的 Bean,但是父容器不能访问子容器的 Bean。

阅读更多

Spring5 中更优雅的第三方 Bean 注入

以下内容基于 Spring6.0.4。

小伙伴们知道,当我们使用 Spring 容器的时候,如果遇到一些特殊的 Bean,一般来说可以通过如下三种方式进行配置:

阅读更多