
Spring Boot
文章平均质量分 90
冰糖心书房
Hi:欢迎来到"冰糖心书房",人个目前就职于一家外企业500强公司担任架构师一职,在这里我会着重分享我多年来在Java开发领域的实战经验和心得体会。从企业级项目架构设计、高并发处理到微服务架构的落地实施。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IntelliJ IDEA 项目启动时 java: java.lang.OutOfMemoryError: GC overhead limit exceeded 的解决方案
首选方案:在 IDEA 设置中将 Build process heap size增加到2048MB 或更高。备用方案:在 IDEA 编译器的“额外命令行参数”中添加。检查构建工具:确认你的 IDEA 是使用自身的构建器还是 Gradle/Maven。如果是后者,请修改对应工具的配置文件。清理缓存:执行有时能解决一些奇怪的 IDE 状态问题。绝大多数情况下,只要正确执行了方案一,这个问题就能迎刃而解。原创 2025-06-13 11:30:15 · 1761 阅读 · 0 评论 -
Spring Boot 项目中如何划分事务边界,避免长事务?
在 Spring Boot 应用中,合理的划分事务边界对于数据一致性、提高并发性能以及避免资源长时间占用(即避免长事务)至关重要。长事务会长时间持有数据库锁和连接,降低系统吞吐量,甚至可能导致死锁或超时。通过综合运用这些策略,可以有效的管理 Spring Boot 应用中的事务边界,确保事务既能保证数据一致性,又能保持简短高效,从而提升整体系统性能和稳定性。原创 2025-06-12 18:03:59 · 1145 阅读 · 0 评论 -
Spring Boot 项目中Http 请求如何对响应体进行压缩
我们梳理一下 Spring Boot 项目中是如何对 HTTP 请求的进行压缩。(请注意:压缩是针对服务器返回给客户端的,而不是客户端发给服务器的请求 URL 或请求体)。核心思想:减少网络传输的数据量,加快客户端加载速度。原创 2025-06-12 17:58:43 · 1343 阅读 · 0 评论 -
Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
和:首先确保相关的库(即类)存在于类路径中。如果库都不存在,谈论配置其 Bean 毫无意义。:然后,即使相关的库存在,也要检查用户是否已经自己定义了相应的 Bean。如果用户已经定义了,那么自动配置就应该尊重用户的选择,不创建默认的 Bean。@ConditionalOnClass(SomeExternalLibrary.class) // 步骤1:确保库存在@Bean@ConditionalOnMissingBean // 步骤2:确保用户没有提供自己的 Bean。原创 2025-06-11 17:36:03 · 1080 阅读 · 0 评论 -
Spring Boot 项目中application.yml 和 bootstrap.yml 文件的区别
中的配置作用于 Application Context。Bootstrap Context 的配置会影响 Application Context 的创建和初始化。文件都是 Spring Boot 项目中用于配置应用程序的 YAML 或 Properties 文件,但它们在。你可以将 Bootstrap Context 理解为 Spring Boot 启动的。,负责加载和管理应用程序中的所有 Bean、处理请求、执行业务逻辑等。中的配置主要作用于 Bootstrap Context,而。原创 2025-03-11 09:51:16 · 1769 阅读 · 0 评论 -
Spring Boot 项目中慢SQL优化方案
Spring Boot 项目中慢 SQL 优化是一个重要的性能优化环节。(MySQL 8.0 已移除)原创 2025-03-07 09:34:50 · 1222 阅读 · 0 评论 -
Spring Security是如何实现自定义认证的
使用浏览器开发者工具或 HTTP 客户端 (如 Postman) 查看 HTTP 请求和响应,以诊断认证问题。Spring Security 允许通过自定义认证机制来处理各种身份验证场景。调整 Spring Security 的日志级别 (例如,设置为。使用 Spring Security 配置类来启用自定义认证。方法中设置断点,逐步调试认证流程。),以获取更详细的输出。这是认证逻辑的核心。原创 2025-02-28 12:53:35 · 1196 阅读 · 0 评论 -
什么是分布式事务?
在微服务架构、SOA (Service-Oriented Architecture) 或分布式系统中,一个业务操作可能需要调用多个服务或操作多个数据库。如果以上三个服务分别部署在不同的服务器上,并且使用不同的数据库,那么就需要使用分布式事务来保证这三个操作要么全部成功,要么全部失败。例如,如果库存扣减成功,但支付失败,那么就需要回滚库存的扣减,否则就会出现超卖的情况。分布式事务的目标是确保所有参与的操作要么全部成功(提交),要么全部失败(回滚),以维护数据的一致性和完整性。一个典型的电商场景:用户下单。原创 2025-02-27 17:12:35 · 995 阅读 · 0 评论 -
Spring Boot 项目中,JDK 动态代理和 CGLIB 动态代理的使用
在 Spring Boot 项目中,JDK 动态代理和 CGLIB 动态代理都是实现 AOP (面向切面编程) 的重要技术。它们的主要区别在于代理对象的生成方式和适用范围。在实际开发中,Spring AOP 会自动选择合适的代理方式。如果没有特殊需求,可以使用默认配置。如果需要强制使用 CGLIB 动态代理,可以设置。默认情况下,Spring AOP 会根据目标类是否实现了接口来选择使用 JDK 动态代理或 CGLIB 动态代理。属性来强制使用 CGLIB 动态代理。原创 2025-02-24 09:48:40 · 1564 阅读 · 0 评论 -
Spring Boot 多模块怎么统一管理
在 Spring Boot 中,多模块项目是一种常见的架构模式,尤其适用于构建大型、复杂的应用程序。然而,多模块项目也带来了一些管理上的挑战,例如依赖版本管理、构建配置管理、模块间的依赖关系管理等。Spring Boot 多模块项目的统一管理是构建大型、可维护应用程序的关键。通过使用父模块、依赖管理、插件管理、属性管理等技术,可以有效地解决多模块项目带来的管理挑战,提高开发效率、降低维护成本,并最终构建出更加健壮和可扩展的 Spring Boot 应用。原创 2025-02-23 13:20:44 · 1254 阅读 · 0 评论 -
Springboot 中如何使用Sentinel
使用 Spring Cloud Alibaba Sentinel 在 Spring Boot 中实现限流、熔断降级是非常简单的。 通过添加依赖、配置 Sentinel 控制台地址、定义受保护的资源、配置规则,你就可以快速为你的 Spring Boot 应用增加一层强大的保护屏障,提升系统的稳定性和容错能力。 Sentinel 提供的可视化控制台和丰富的特性,也使得流量控制和容错管理更加便捷高效。原创 2025-02-11 15:26:04 · 1961 阅读 · 1 评论 -
Spring Boot @Import注解的作用
是 Spring Framework 中一个非常重要的注解,它提供了一种灵活的方式来导入和注册 Bean 定义到 Spring 上下文。方法,该方法返回一个字符串数组,包含需要导入的配置类或 Bean 定义类的完全限定名。的 Bean 定义并将其注册到容器中。的不同用法和注意事项,可以更好地利用 Spring Boot 的特性,构建可维护和灵活的应用程序。是一个非常强大的注解,可以用来组织和模块化 Spring 配置,并提供条件化的配置能力。注解的方法,并将这些方法返回的对象作为 Bean 注册到容器中。原创 2025-02-09 10:27:02 · 1145 阅读 · 0 评论 -
SpringBoot中为什么要用DeferredImportSelector
它允许在所有配置类处理完毕后,再根据其他配置类的信息选择性地导入一些配置类。会根据 Spring 容器中的条件 (例如,是否存在某个 Bean,或者某个配置属性的值) 来过滤这些自动配置类,只选择符合条件的自动配置类进行导入。解决了这个问题,它的执行会被延迟到所有常规配置类都被处理之后,此时它可以访问到所有配置类的信息,从而做出更明智的导入决策。会在配置类解析的早期阶段执行,这意味着在选择要导入的配置类时,它可能无法访问完整的配置信息,导致无法做出最佳选择。来选择需要导入的自动配置类。原创 2025-02-09 10:09:13 · 972 阅读 · 0 评论 -
Spring Boot 和Tomcat的关系
Spring Boot 和 Tomcat 的结合可以让我们能够快速、方便地开发、部署和运行 Java Web 应用,既支持内嵌运行模式,又允许在传统的 Web 服务器上进行部署,提供了灵活性和高效性。原创 2025-02-08 10:45:49 · 2093 阅读 · 1 评论