LinkedBear的技术站 Spring For Bear

Java实际开发中, enum枚举用的多吗?

那可太多了。 枚举的作用绝不仅仅是代替传统的常量,更重要的意义是简化了有限可穷举的元素对象的定义。说白了,就是写代码省事儿了。 但是吧,枚举并不只是那么简单,下面我结合几个示例给你演示一下真实开发中的使用方式。 代替传统的常量 不用枚举的时候,我们一般都这么写常量:

LinkedBear Published on 2025-07-03

JDK动态代理能代理final方法吗?final方法下的事务会失效吗?

这是一个很有意思的知乎问题,也是日常开发中比较少见的场景。能感觉出来,题主对 JDK 动态代理和 Cglib 动态代理的理解比较透彻,提出这个问题肯定有过自己的思考。本文比较长,我会从动态代理的实现机制出发,过渡到测试案例的设计,随后分析调试效果来完整的回答这个问题。 1. 动态代理的实现机制 我们

LinkedBear Published on 2025-06-25

Spring的延迟加载是否可以解决构造函数形式的循环依赖?

先下结论:不能。 究其原因,简单地说,基于构造方法的循环依赖,总会要在对象被实例化时获取被依赖的对象,那么这个时候 @Lazy 注解的标注相当于失效了。 换个稍微生动一点的说法,假设Spring是大管家,现在有A和B两个Bean,本来你用 @Lazy 注解是为了让标注的B创建的晚一点,结果到了A要依

LinkedBear Published on 2025-06-19

为什么人们宁可用Lombok,也不把成员设为public?

简单地说,既有设计的前瞻(有没有是你的事,用不用是我的事),又有妥协和无奈(不这么干代码就跑不起来)。 一个一个论述。 有没有是你的事,用不用是我的事 我们假定

LinkedBear Published on 2025-06-13

Spring中的单实例Bean是线程安全的吗?

近日小伙伴给我推了一个知乎的问题,问题就一句话:Spring中的单实例Bean是线程安全的吗?这一下子就提起了我的论述之心。本着要讲就讲透的原则,这篇文章就来详细论述一下该问题。 原问题的题主的顾虑点在 Bean 的延迟加载,实际上单纯论 Bean 的线程安全问题而言,安全不安全取决于管理和使用该

LinkedBear Published on 2025-06-04

Spring中Bean的作用域

回忆作用域的概念 作用域这个概念我们从一门编程语言的学习开始就会接触到,以我们熟悉的 Java 为例,一个类中通常会包含一些成员变量、方法变量、局部变量,下面的代码片段中就是非常经典的作用域区分案例。对于基础扎实的读者而言,代码片段中的问题不难回答,四个问题中可访问的成员作用域级别依次提升,这也说明

LinkedBear Published on 2025-05-19

MyBatis的一级缓存竟然还会引来麻烦?

原问题 MyBatis 一级缓存与 SpringFramework 的声明式事务有冲突吗?在 Service 中开启事务,连续查询两次同样的数据,结果两次查询的结果不一致。 —— 使用 Mapper 的 selectById 查出来实体,然后修改实体的属性值,然后再 selectById 一下查出来

LinkedBear Published on 2020-06-28

SpringFramework中的注解声明式事务怎么被Shiro搞失效了

近期我在 SpringBoot 的小册交流群里碰见一个问题,感觉蛮有意思的,拿出来跟小伙伴们分享一下。 原问题 那位小伙伴的项目中,有一部分 Service 的注解事务一直不起作用,但也只是一部分起作用,也有一部分是好的。而且更奇怪的是,如果他把一个事务不起作用的 ServiceImpl 代码完整的

LinkedBear Published on 2020-06-24