- SpringBoot2.6起allow-circular-references默认关闭,升级后一批老服务启动即失败。当时最快的解法显然是把开关打开,我们明令禁止——它只是把报错变成隐患,环还在,只是Spring替你绕了。先讲机制:三级缓存能解setter或字段注入的环,靠的是提前暴露一个早期引用给对方;但构造器注入的环无解(对象没构造完就没有引用可暴露),原型Bean的环同样无解。所以报错信... SpringBoot2.6起allow-circular-references默认关闭,升级后一批老服务启动即失败。当时最快的解法显然是把开关打开,我们明令禁止——它只是把报错变成隐患,环还在,只是Spring替你绕了。先讲机制:三级缓存能解setter或字段注入的环,靠的是提前暴露一个早期引用给对方;但构造器注入的环无解(对象没构造完就没有引用可暴露),原型Bean的环同样无解。所以报错信...
- 从源码到实践:我对 Spring 设计模式的理解Spring 并不是把 GoF 设计模式逐个实现一遍,而是把多个模式组合成了一套可扩展的运行时。理解这些组合关系,比背诵“JdbcTemplate 是模板方法、AOP 是代理模式”更重要。 一、先建立一个正确的观察角度很多文章会直接列出 Spring 使用的设计模式:工厂模式、单例模式、代理模式、模板方法、观察者模式、适配器模式、策略模式、责... 从源码到实践:我对 Spring 设计模式的理解Spring 并不是把 GoF 设计模式逐个实现一遍,而是把多个模式组合成了一套可扩展的运行时。理解这些组合关系,比背诵“JdbcTemplate 是模板方法、AOP 是代理模式”更重要。 一、先建立一个正确的观察角度很多文章会直接列出 Spring 使用的设计模式:工厂模式、单例模式、代理模式、模板方法、观察者模式、适配器模式、策略模式、责...
- Spring 组件:一场关于“对象如何被组织起来”节目类型:技术播客逐字稿主题:Spring Framework 与 Spring Boot 中的核心组件建议时长:15~20 分钟适合听众:Java 初学者、正在使用 Spring Boot 的开发者、想弄清 @Component 背后机制的工程师 节目简介很多人第一次接触 Spring,记住的是一串注解:@Component、@Servi... Spring 组件:一场关于“对象如何被组织起来”节目类型:技术播客逐字稿主题:Spring Framework 与 Spring Boot 中的核心组件建议时长:15~20 分钟适合听众:Java 初学者、正在使用 Spring Boot 的开发者、想弄清 @Component 背后机制的工程师 节目简介很多人第一次接触 Spring,记住的是一串注解:@Component、@Servi...
- 起因项目启动从 20 秒慢慢涨到快 90 秒,本地改一行代码重启一次,等得人想砸键盘。一开始以为是自己电脑不行,后来发现测试环境也一样,才开始认真查。这篇记一下排查过程和最后动的东西。 先量,别猜第一步不是改代码,是搞清楚时间花在哪。Spring Boot 启动日志里默认有耗时,但不够细。我是加了个 ApplicationStartup 的监听,或者简单点,直接在 main 里打时间戳:p... 起因项目启动从 20 秒慢慢涨到快 90 秒,本地改一行代码重启一次,等得人想砸键盘。一开始以为是自己电脑不行,后来发现测试环境也一样,才开始认真查。这篇记一下排查过程和最后动的东西。 先量,别猜第一步不是改代码,是搞清楚时间花在哪。Spring Boot 启动日志里默认有耗时,但不够细。我是加了个 ApplicationStartup 的监听,或者简单点,直接在 main 里打时间戳:p...
- 先说结论面试被问循环依赖,很多人张嘴就是“三级缓存”,然后背一遍三个 Map 的名字。但真在项目里遇到 BeanCurrentlyInCreationException 的时候,光知道三级缓存没用,得知道什么情况它能救、什么情况它救不了、救不了的时候该怎么改。我遇到过的循环依赖,最后基本都是靠改代码解决的,不是靠 Spring 兜底。 Spring 能处理哪些限定条件挺死的:单例 + 字段... 先说结论面试被问循环依赖,很多人张嘴就是“三级缓存”,然后背一遍三个 Map 的名字。但真在项目里遇到 BeanCurrentlyInCreationException 的时候,光知道三级缓存没用,得知道什么情况它能救、什么情况它救不了、救不了的时候该怎么改。我遇到过的循环依赖,最后基本都是靠改代码解决的,不是靠 Spring 兜底。 Spring 能处理哪些限定条件挺死的:单例 + 字段...
- 在后端开发中,很多场景需要实现模块解耦、异步通知,比如订单状态变更通知、系统配置刷新、日志告警推送等。Redis 自带的 Pub/Sub 发布订阅模式轻量易用,不需要额外部署消息中间件,非常适合简单的消息通知场景。本文基于 SpringBoot 整合 RedisTemplate,手把手实现消息发布、消息监听订阅,附带完整可运行代码 在后端开发中,很多场景需要实现模块解耦、异步通知,比如订单状态变更通知、系统配置刷新、日志告警推送等。Redis 自带的 Pub/Sub 发布订阅模式轻量易用,不需要额外部署消息中间件,非常适合简单的消息通知场景。本文基于 SpringBoot 整合 RedisTemplate,手把手实现消息发布、消息监听订阅,附带完整可运行代码
- Spring Cloud 入门与实战:从微服务协作到网关与负载均衡适合读者:了解 Java、Maven 和 Spring Boot,希望系统理解 Spring Cloud,并搭建一条微服务请求链路的开发者。版本核对日期:2026-10-23。本文示例采用 Java 17、Spring Boot 4.1.0、Spring Cloud 2025.1.2;这是明确的示例基线,不代表你阅读时的最新... Spring Cloud 入门与实战:从微服务协作到网关与负载均衡适合读者:了解 Java、Maven 和 Spring Boot,希望系统理解 Spring Cloud,并搭建一条微服务请求链路的开发者。版本核对日期:2026-10-23。本文示例采用 Java 17、Spring Boot 4.1.0、Spring Cloud 2025.1.2;这是明确的示例基线,不代表你阅读时的最新...
- 上一篇的结尾停在一个不太舒服的事实上:ToolCallingAdvisor 的循环是模型驱动的。模型请求工具,框架执行,结果回传,模型再判断——循环直到模型不再请求工具为止。这个机制在“查订单→查物流→回复”这类线性任务上工作得很好,但它没有回答一个更根本的问题:当任务需要先调研再执行、执行后反思、失败后调整策略时,谁来决定“下一步该做什么”?如果答案仍然是“模型自己决定”,那么 Plann... 上一篇的结尾停在一个不太舒服的事实上:ToolCallingAdvisor 的循环是模型驱动的。模型请求工具,框架执行,结果回传,模型再判断——循环直到模型不再请求工具为止。这个机制在“查订单→查物流→回复”这类线性任务上工作得很好,但它没有回答一个更根本的问题:当任务需要先调研再执行、执行后反思、失败后调整策略时,谁来决定“下一步该做什么”?如果答案仍然是“模型自己决定”,那么 Plann...
- Spring(Spring Boot)项目的部署,核心流程是打成可执行 jar → 放到 Linux 服务器 → 用 systemd 或 Docker 托管 → Nginx 反向代理到域名。一、打包:先确认能打出正确的 jarpom.xml 里必须有 Spring Boot 插件(Gradle 用 bootJar),否则打出来的 jar 里没有内嵌 Tomcat,运行会报 no main m... Spring(Spring Boot)项目的部署,核心流程是打成可执行 jar → 放到 Linux 服务器 → 用 systemd 或 Docker 托管 → Nginx 反向代理到域名。一、打包:先确认能打出正确的 jarpom.xml 里必须有 Spring Boot 插件(Gradle 用 bootJar),否则打出来的 jar 里没有内嵌 Tomcat,运行会报 no main m...
- 起因项目里有个下单逻辑,扣库存和写订单放一个方法里,加了 @Transactional,测的时候没问题。上线之后有一回库存扣了,订单没生成,查了半天发现事务根本没回滚。那会儿才知道,@Transactional 不是加上就万事大吉的。这篇就把我自己踩过的、以及排查时搞清楚的东西记一下。 默认只回滚 RuntimeException这个是最容易忽略的。@Transactional 默认只在抛... 起因项目里有个下单逻辑,扣库存和写订单放一个方法里,加了 @Transactional,测的时候没问题。上线之后有一回库存扣了,订单没生成,查了半天发现事务根本没回滚。那会儿才知道,@Transactional 不是加上就万事大吉的。这篇就把我自己踩过的、以及排查时搞清楚的东西记一下。 默认只回滚 RuntimeException这个是最容易忽略的。@Transactional 默认只在抛...
- Spring 的声明式事务好用,但它有个特点:不生效的时候往往静悄悄的,既不报错也不回滚,直到脏数据进了库才被发现的。整理 6 个我在项目和面试里见得最多的失效场景。 先记住一条底层原理@Transactional 靠的是代理(AOP)。Spring 在运行时把你的类包一层代理对象,事务的开启、提交、回滚都发生在代理调用真实方法的前后。几乎所有失效场景,本质上都是「这次调用没走代理」。理解... Spring 的声明式事务好用,但它有个特点:不生效的时候往往静悄悄的,既不报错也不回滚,直到脏数据进了库才被发现的。整理 6 个我在项目和面试里见得最多的失效场景。 先记住一条底层原理@Transactional 靠的是代理(AOP)。Spring 在运行时把你的类包一层代理对象,事务的开启、提交、回滚都发生在代理调用真实方法的前后。几乎所有失效场景,本质上都是「这次调用没走代理」。理解...
- Spring Boot 原理与工程实践研究 摘要Spring Boot 是当前 Java 企业级开发中使用最广泛的应用开发框架之一。它建立在 Spring Framework 之上,通过自动配置、Starter 依赖管理、嵌入式服务器和生产级监控等能力,显著降低了企业应用的开发与部署成本。本文围绕 Spring Boot 的核心设计思想展开研究,分析其自动配置机制、依赖注入流程、应用启动过... Spring Boot 原理与工程实践研究 摘要Spring Boot 是当前 Java 企业级开发中使用最广泛的应用开发框架之一。它建立在 Spring Framework 之上,通过自动配置、Starter 依赖管理、嵌入式服务器和生产级监控等能力,显著降低了企业应用的开发与部署成本。本文围绕 Spring Boot 的核心设计思想展开研究,分析其自动配置机制、依赖注入流程、应用启动过...
- 线上接口偶发 500,别急着改代码:使用华为云 CodeArts Agent 进行 Spring Boot 日志根因分析 一、前言线上问题最棘手的地方,往往不是报错本身,而是问题出现得不稳定:同一个接口有时正常、有时返回500;日志分散在Controller、Service、数据库访问层和下游服务中;本地又很难复现。排查时不应看到异常就立即修改代码,而应先把证据串起来,确认问题发生在哪个环... 线上接口偶发 500,别急着改代码:使用华为云 CodeArts Agent 进行 Spring Boot 日志根因分析 一、前言线上问题最棘手的地方,往往不是报错本身,而是问题出现得不稳定:同一个接口有时正常、有时返回500;日志分散在Controller、Service、数据库访问层和下游服务中;本地又很难复现。排查时不应看到异常就立即修改代码,而应先把证据串起来,确认问题发生在哪个环...
- Spring Cloud 项目搭建指南一份学习记录,记录从零搭建 Spring Cloud 微服务项目的结构、配置和踩过的坑。 一、项目结构(最优解)spring-cloud-again (父 pom,聚合模块)│├── common → 公共代码(工具类、通用实体、统一返回)│├── module → 业务模块聚合(pom 类型... Spring Cloud 项目搭建指南一份学习记录,记录从零搭建 Spring Cloud 微服务项目的结构、配置和踩过的坑。 一、项目结构(最优解)spring-cloud-again (父 pom,聚合模块)│├── common → 公共代码(工具类、通用实体、统一返回)│├── module → 业务模块聚合(pom 类型...
- IOC控制反转这词第一次看确实懵。后来我自己的理解就是:以前对象自己 new、自己 set 依赖,现在这活交给容器干了。@Autowired 注不进来,我遇到过两次。一次是启动类在 com.example.demo,我的类在 com.other 下面,压根没扫到。另一次是同一个接口俩实现类,Spring 不知道给哪个,直接报 NoUniqueBeanDefinitionException。... IOC控制反转这词第一次看确实懵。后来我自己的理解就是:以前对象自己 new、自己 set 依赖,现在这活交给容器干了。@Autowired 注不进来,我遇到过两次。一次是启动类在 com.example.demo,我的类在 com.other 下面,压根没扫到。另一次是同一个接口俩实现类,Spring 不知道给哪个,直接报 NoUniqueBeanDefinitionException。...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签