
spring boot
文章平均质量分 70
小猿、
整洁的代码简单直接,整洁的代码如同优美的散文,整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java17多线程可见性详细讲解以及问题,为什么用它?
本文探讨了Java多线程编程中的可见性问题及其解决方案。可见性指线程对共享变量的修改能否被其他线程及时看到,主要受CPU缓存架构和指令重排序影响。Java通过JMM内存模型和happens-before规则保证可见性,提供了volatile、synchronized、final和原子类等解决方案。Java17对volatile和ThreadLocal进行了优化,并引入更严格的内存模型。最佳实践包括优先使用final、合理选择同步机制和避免常见误区。理解这些原理对于编写正确的并发代码至关重要。原创 2025-08-14 15:53:17 · 1174 阅读 · 0 评论 -
Spring中的BeanFactoryAware接口详解,应用场景和示例代码
摘要:BeanFactoryAware是Spring框架的核心接口,允许Bean获取创建它的BeanFactory引用。主要应用于编程式访问容器、延迟加载、框架扩展等场景。通过实现setBeanFactory方法,Bean可动态查找其他Bean或查询容器信息。相比ApplicationContextAware,它提供更基础的功能。使用时需注意避免过度耦合,优先考虑依赖注入,仅在特殊场景下使用该接口。典型应用包括支付系统等需要动态选择实现类的场景,但应封装使用并添加充分文档说明。原创 2025-08-13 11:30:13 · 345 阅读 · 0 评论 -
Spring中的BeanDefinition接口详解,应用场景和示例代码
本文介绍了Spring框架中的核心接口BeanDefinition,它定义了Bean的配置元数据,包含类名、作用域等创建实例所需的所有信息。文章详细解析了BeanDefinition的层次结构、核心属性(如beanClassName、scope等)和方法,并展示了编程式注册Bean、动态修改定义等应用场景。还探讨了高级应用如条件化注册、动态代理等,以及与BeanDefinitionRegistry等接口的协作。最后指出,虽然日常开发多使用注解配置,但深入理解BeanDefinition能增强对Spring容原创 2025-08-13 11:29:55 · 461 阅读 · 0 评论 -
Java 17 中的 Collections 类介绍、应用场景和示例代码
是 Java 集合框架中的一个工具类,提供了一系列静态方法,用于对集合(如ListSetMap)进行高效操作、算法实现和线程安全包装。原创 2025-08-12 10:26:27 · 231 阅读 · 0 评论 -
Mysql联表查询索引失效问题及优化方案
《数据库联表查询索引失效分析与优化方案》针对大型数据库中JOIN操作性能下降问题,系统分析了六大核心原因:连接字段无索引、数据类型不匹配、复合索引顺序不当等。提出三级优化策略:基础层面确保连接字段正确索引;中级策略采用覆盖索引和查询重写;高级方案结合参数调优。通过电商订单案例演示优化过程,强调定期维护和监控的重要性,并给出索引设计三原则与查询编写规范。该方案可有效解决索引失效问题,提升大数据量下的联表查询性能。原创 2025-08-12 10:25:47 · 1006 阅读 · 0 评论 -
Java中公用字符串工具类拿走、直接用
摘要:StringUtils是一个全面的Java字符串操作工具类,提供了100多个静态方法,涵盖了字符串处理的8大核心功能:空值/空白检查、截取与分割、连接与拼接、转换与格式化、搜索与比较、编码与加密、校验与验证、统计与分析。该工具类采用空值安全设计,使用StringBuilder优化性能,默认UTF-8编码,并预编译正则表达式。适用于数据清洗、输入验证、文本分析、安全处理和数据转换等场景,可显著提升开发效率。用户可直接使用或根据需求扩展功能。原创 2025-08-05 16:19:11 · 512 阅读 · 0 评论 -
Spring Boot 应用启动错误分析与解决方案:MinIO 时间同步问题
**摘要:**SpringBoot应用启动失败,根源是MinIO连接异常。错误链显示从Shiro安全框架到MinIO客户端的依赖注入失败,最终发现是客户端与MinIO服务器时间不同步(差异20分钟),触发RequestTimeTooSkewed错误。解决方案包括同步系统时间(NTP服务)、检查服务器时间、添加代码容错机制,特别需注意虚拟机/容器环境的时间同步问题。该问题揭示了分布式系统中时间同步对云存储服务认证的关键作用,建议部署时配置NTP服务并建立时间监控机制。 (149字)原创 2025-08-05 16:17:17 · 337 阅读 · 0 评论 -
JUnit 4.13.2 单元测试框架全面指南
JUnit4是Java单元测试的主流框架,4.13.2是其最终版本。摘要介绍了其核心组件和注解(如@Test、@Before等),详细讲解了断言方法和测试规则应用,包括参数化测试和测试套件组织,并提供了Calculator测试示例。文章还分析了JUnit4生命周期和常见问题解决方案,建议新项目使用JUnit5,但强调掌握JUnit4对维护遗留系统的重要性。全文约150字,系统梳理了JUnit4的核心功能与最佳实践。原创 2025-08-01 13:30:16 · 514 阅读 · 0 评论 -
使用SpringBoot 3.2.4 + CXF 4.0.0 + JDK17实现WebService服务
本文介绍了基于SpringBoot 3.2.4和Apache CXF 4.0.0实现WebService服务的完整方案。主要内容包括:WebService的基本概念和特点(跨平台、语言无关性等);技术选型说明(选择CXF框架的优势);详细实现步骤(从项目初始化、服务定义到客户端实现);测试验证方法;以及CXF与SpringBoot集成原理等核心技术要点。文章还提供了安全性增强、性能优化等扩展建议,并总结了WebService在企业应用集成中的重要性。该方案适用于需要实现跨平台、松耦合系统集成的开发场景。原创 2025-07-30 16:50:12 · 1069 阅读 · 0 评论 -
Java中Flux类详解:响应式编程的核心组件
Flux是Reactor框架中实现响应式编程的核心类,代表能发射0-N个元素的异步数据流。它遵循响应式流规范,支持背压机制,提供丰富的操作符进行数据转换、过滤和组合。Flux可通过静态方法创建,支持冷/热发布模式,并能在不同调度器上执行。在Spring WebFlux和数据处理管道中广泛应用,与Mono形成互补。使用时需注意阻塞操作避免、操作符链优化和合理选择调度器等性能考量。通过StepVerifier可方便测试Flux流。Flux为构建高性能异步应用提供了强大支持。原创 2025-07-30 16:48:25 · 1030 阅读 · 0 评论 -
Spring Boot 防重放攻击全面指南:原理、方案与最佳实践
本文介绍了SpringBoot防御重放攻击的多种方案。重放攻击通过重复发送合法请求实施攻击,常见于金融、电商等场景。文章详细解析了三种防御方案:时间戳+签名方案(确保请求时效性)、Nonce方案(使用一次性令牌)、序列号方案(验证请求连续性),并提供了核心代码实现。建议采用组合防御策略,配合HTTPS、请求校验等基础措施,构建多层次防护体系。不同方案各有优缺点,需根据业务场景灵活选择。最后强调应建立监控体系,定期进行安全审计,持续更新防护措施。原创 2025-07-29 14:24:43 · 1277 阅读 · 0 评论 -
Spring Boot 简单接口角色授权检查实现
摘要:本文介绍了一种轻量级SpringBoot接口权限控制方案,采用自定义注解+拦截器方式实现。核心实现包括:1)定义@RequiredPermission注解标记权限;2)创建拦截器检查用户权限;3)注册拦截器配置拦截路径。方案特点为零依赖、代码简洁(不足100行)、易于扩展,支持RESTful风格的403响应。文中提供了完整代码示例和测试方法,适用于快速开发场景,并建议了JWT整合、权限缓存等优化方向。该方案在满足基本安全需求的同时保持了低侵入性,可作为中小型项目的轻量级安全解决方案。原创 2025-07-29 14:23:51 · 421 阅读 · 0 评论 -
Spring Framework 中的 ApplicationContext 类详解
Spring核心容器ApplicationContext解析 摘要:ApplicationContext是Spring框架的核心接口,作为IoC容器管理所有Bean及其依赖关系。它继承自BeanFactory并扩展了国际化、事件发布、资源加载等企业级功能。文章详细介绍了其继承体系、核心功能(Bean管理、资源访问等)、常用实现类(如ClassPathXmlApplicationContext)以及与BeanFactory的关键区别。同时涵盖了容器生命周期、层次化结构、环境配置等高级特性,并提供了Web应用、原创 2025-07-02 13:37:52 · 678 阅读 · 0 评论 -
Spring Boot 文件上传大小配置错误解决方案
摘要:SpringBoot应用中"spring.servlet.multipart.max-file-size"配置错误常见于格式问题。正确配置应使用大写单位(如10MB),避免空格和旧格式,注意SpringBoot 2.x+采用DataSize类型。解决方案包括:在YAML/properties中使用"MB/GB"等标准单位,确保max-request-size≥max-file-size,并注意版本差异(1.x与2.x配置键不同)。典型错误包括:小写单位、Mb(比原创 2025-06-26 18:07:08 · 1026 阅读 · 0 评论 -
在多个SpringBoot程序中./相对路径下隐患、文件覆盖问题
两个 Spring Boot 应用生成的配置文件被覆盖,是因为 相对路径的解析依赖于当前工作目录(Working Directory),而你可能在运行应用时未正确设置各自的工作目录。根本问题在于 相对路径的解析依赖于当前工作目录,而两个应用运行时的工作目录被误设为同一位置。通过使用绝对路径、类路径资源或动态生成唯一路径,可以彻底避免文件覆盖问题。建议优先采用 方案 2(类路径资源)或 方案 3(用户目录)确保路径隔离。原创 2025-05-16 16:55:43 · 335 阅读 · 0 评论 -
报错:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error 快速排查解决
通常是由于 JSON 反序列化失败导致的。原创 2025-05-16 16:55:01 · 2409 阅读 · 0 评论 -
Spring AI介绍、应用场景和示例代码
Spring AI 是 Spring 生态中整合 AI 能力的标准方式,适合企业应用、安全可控地使用 AI,构建智能应用。它抽象了底层 API 调用,让开发者专注业务逻辑。原创 2025-05-07 11:17:47 · 1320 阅读 · 0 评论 -
OAuth2AuthorizationEndpointFilter类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器中的核心过滤器,负责处理 OAuth2 授权码授权流程中的端点请求。// 查询客户端信息// 解析scope// 用户同意授权" +} else {// 用户拒绝授权" +@Beanhttp// 自定义认证转换器@Override// 自定义转换逻辑= null) {// 处理自定义参数// 默认处理@Beanhttp// 自定义成功处理器。原创 2025-04-25 15:53:14 · 777 阅读 · 0 评论 -
OAuth2TokenEndpointFilter类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器中的一个关键过滤器,负责处理 OAuth2 令牌端点(Token Endpoint)的请求。它是 OAuth2 授权服务器实现的核心组件之一,用于处理各种授权类型的令牌请求。@Bean// 自定义认证转换器,添加密码模式支持new OAuth2PasswordAuthenticationConverter() // 自定义的密码模式转换器@Override// 添加自定义响应头// 调用默认实现添加新的授权类型。原创 2025-04-25 15:52:21 · 437 阅读 · 0 评论 -
OAuth2RefreshTokenAuthenticationConverter类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器中的一个认证转换器,专门用于处理 OAuth2 刷新令牌(Refresh Token)的请求。它实现了接口,负责将 HTTP 请求转换为认证对象。@Override// 先调用默认实现// 添加自定义逻辑,如验证额外的参数= null) {@Beannew CustomRefreshTokenAuthenticationConverter(), // 使用自定义转换器))原创 2025-04-23 11:07:58 · 378 阅读 · 0 评论 -
OAuth2AuthorizationEndpointConfigurer类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器模块中的一个重要配置类,用于配置 OAuth2 授权端点(/oauth2/authorize)。@Beanhttp// 可以修改默认的转换器列表})// 自定义认证转换器@Override// 自定义转换逻辑@Beanhttp// 可以修改默认的提供者列表})// 自定义认证提供者@Override// 自定义认证逻辑@Override@Beanhttp// 自定义验证逻辑。原创 2025-04-18 15:51:32 · 468 阅读 · 0 评论 -
OAuth2AuthorizationServerConfiguration类介绍、应用场景和示例代码
这个类来自包,是 Spring Boot 自动配置 OAuth2 授权服务器的核心类。@Bean作用:提供客户端注册信息的存储仓库条件:当没有其他Bean存在时才创建:只有当配置了注册客户端时才创建实现:使用内存存储 (),适合开发和测试环境。原创 2025-04-16 17:23:15 · 468 阅读 · 0 评论 -
OAuth2AuthorizationServerWebSecurityConfiguration类介绍、应用场景和示例代码
类是 Spring Boot 自动配置 OAuth2 授权服务器 Web 安全的核心类,负责配置授权服务器的安全过滤链。@Bean// 自定义授权端点访问规则@Bean@Order(Integer.MIN_VALUE + 1) // 在授权服务器过滤器之后。原创 2025-04-16 17:22:27 · 315 阅读 · 0 评论 -
Mysql数据库中锁的介绍、应用场景和示例代码
在 MySQL 数据库中,锁是用于管理并发访问的重要机制,确保数据的一致性和完整性。MySQL 提供了多种锁机制,包括表级锁和行级锁,每种锁都有其特定的应用场景。以下将详细探讨 MySQL 锁的应用场景、原理、实战示例,以及为什么选择 MySQL 锁而不是其他锁。原创 2025-04-11 11:11:13 · 762 阅读 · 0 评论 -
OAuth2AuthorizationServerAutoConfiguration类介绍、应用场景和示例代码
是 Spring Boot 提供的自动配置类,用于自动设置 OAuth2 授权服务器。它是 Spring Authorization Server 项目的一部分,提供了 OAuth 2.1 和 OpenID Connect 1.0 规范的实现。简化了 Spring Authorization Server 的配置过程,通过自动配置机制提供了开箱即用的 OAuth2 授权服务器功能。原创 2025-04-14 08:00:00 · 459 阅读 · 0 评论 -
LoadingCache类介绍、应用场景和示例代码
是 Google Guava 库中的一个重要缓存实现,它提供了自动加载和缓存管理的功能。原创 2025-04-14 10:00:00 · 859 阅读 · 0 评论 -
@RabbitListener注解介绍、应用场景和示例代码
是 Spring AMQP 提供的核心注解,用于将方法标记为 RabbitMQ 消息监听器。它能够监听指定队列的消息,并在消息到达时触发方法执行。原创 2025-04-09 09:00:00 · 1279 阅读 · 0 评论 -
SpringBoot中使用Zookeeper实现分布式锁(简单示例)
Zookeeper是一个分布式协调服务,非常适合用来实现分布式锁。下面我将介绍如何在Spring Boot项目中集成Zookeeper来实现分布式锁。原创 2025-04-09 10:00:00 · 476 阅读 · 0 评论 -
CommandLineRunner接口介绍、应用场景和示例代码
是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用启动后执行一些初始化逻辑。它与类似,但更简单,直接接收命令行参数作为字符串数组。的核心特点执行时机的run方法会在 Spring Boot 应用启动完成后、开始处理请求之前执行。适合用于执行一些初始化任务,例如加载数据、初始化缓存、检查配置等。参数传递通过参数可以直接访问应用启动时传递的命令行参数。参数以字符串数组的形式传递,需要手动解析。多个 Runner 的执行顺序如果有多个或的实现类,可以通过@Order注解或实现。原创 2025-03-18 16:36:14 · 466 阅读 · 0 评论 -
ApplicationRunner接口介绍、应用场景和示例代码
是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用启动后执行一些初始化逻辑。它与类似,但提供了更灵活的参数处理方式(通过对象)。的核心特点执行时机的run方法会在 Spring Boot 应用启动完成后、开始处理请求之前执行。适合用于执行一些初始化任务,例如加载数据、初始化缓存、检查配置等。参数传递通过对象可以访问应用启动时传递的命令行参数。提供了对参数的高级封装,支持解析形式的参数。多个 Runner 的执行顺序如果有多个或的实现类,可以通过@Order注解或实现。原创 2025-03-18 16:33:25 · 788 阅读 · 0 评论 -
Java17中Executors类介绍、应用场景和示例代码
Executors类是 Java 并发工具包中的工具类,用于简化线程池的创建和管理。通过线程池,可以避免频繁创建和销毁线程的开销,提升系统性能和资源利用率。Executors类通过封装线程池的创建逻辑,简化了并发编程。开发者需根据任务类型(CPU 密集型/I/O 密集型)和需求(定时、顺序执行)选择合适的线程池,并注意资源管理和异常处理,以构建高效稳定的并发应用。原创 2025-03-17 10:00:00 · 613 阅读 · 0 评论 -
使用Java在系统中控制注册人数业务场景以及解决方案
为了有效保护注册人数的限制逻辑,建议结合多种方式(如远程验证、License 文件、硬件绑定等)来增加破解难度。同时,可以通过代码混淆和加固工具进一步提高安全性。如果条件允许,尽量将核心逻辑放到服务器端,减少客户端的风险。原创 2025-03-14 16:30:49 · 743 阅读 · 0 评论 -
Seata中AT模式、TCC模式、Saga模式、XA模式介绍、应用场景和示例代码
Seata的四种模式:AT、TCC、Saga和XA详细讲解原创 2025-03-14 16:29:59 · 2099 阅读 · 0 评论 -
RLock类详细介绍、应用场景和示例代码
是 Redisson 提供的分布式可重入锁(类似),基于Redis实现,常用于分布式环境下的并发控制。1. RLock 详解🔹 特点基于 Redis 实现,支持集群环境。可重入,同一个线程可以多次获取同一把锁,不会被阻塞。支持 WatchDog 机制,避免锁因宕机未手动释放而导致死锁。支持超时自动释放,避免死锁问题。支持公平锁、联锁、红锁等多种高级特性。🔹 依赖🔹 获取RLock// 需要传入 Redis 配置2. RLock 常用方法方法说明lock()阻塞式加锁。原创 2025-03-06 11:32:52 · 1465 阅读 · 0 评论 -
ReentrantLock类介绍、应用场景、示例代码
是 Java 并发工具包中的一个重要类,位于包下。它实现了接口,并提供了比传统的更加灵活的锁机制。主要用于控制多线程对共享资源的访问,确保在同一时刻只有一个线程可以访问临界区,避免竞态条件和数据不一致。与相比,提供了更多的控制选项,比如支持等。原创 2025-03-04 17:16:44 · 1085 阅读 · 0 评论 -
RabbitTemplate类介绍、应用场景和示例代码
是 Spring AMQP(Advanced Message Queuing Protocol)提供的核心类之一,它是接口的主要实现,用于与 RabbitMQ 交互。它封装了消息的生产和消费逻辑,使得开发者可以更方便地与 RabbitMQ 进行通信。方法作用发送消息接收并转换消息receive()仅接收消息(不转换)发送消息并等待响应监听消息是否到达交换机监听消息是否到达队列开启事务支持适用于大多数 RabbitMQ 操作,结合 Spring Boot 配置可以大大简化开发。原创 2025-03-04 17:15:48 · 820 阅读 · 0 评论 -
ReentrantLock类介绍、应用场景、示例代码
是 Java 并发工具包中的一个重要类,位于包下。它实现了接口,并提供了比传统的更加灵活的锁机制。主要用于控制多线程对共享资源的访问,确保在同一时刻只有一个线程可以访问临界区,避免竞态条件和数据不一致。与相比,提供了更多的控制选项,比如支持等。原创 2025-02-28 13:24:02 · 976 阅读 · 0 评论 -
SpringDataJPA使用deleteAllInBatch方法逻辑删除失效
该方法是一个批量删除操作,通常是直接生成SQL语句一次性删除数据,不会逐个加载实体,因此也不会触发实体的生命周期回调方法。),可以自定义一个批量更新的方法,通过直接执行SQL更新操作来实现逻辑删除。在使用Spring Boot JPA时,执行批量删除操作时,遇到逻辑删除失效的问题。这会逐个处理实体,并触发相应的生命周期回调方法,从而确保逻辑删除(即更新。这种方式在批量删除前,先手动更新实体,确保逻辑删除字段被正确设置。时,数据会被直接从数据库中删除,而不是进行逻辑删除的原因。原创 2025-02-26 10:00:00 · 808 阅读 · 0 评论 -
Spring Data JAP审计功能(创建人、创建时间、修改人、修改时间)实现方案、应用场景和示例代码
提供了审计功能,可以自动记录实体的创建人、创建时间、修改人、修改时间。通常,应用于需要跟踪数据变动历史和操作人员的场景。通过以上步骤,你可以实现审计功能来自动记录实体的创建人、创建时间、修改人和修改时间。日志追踪:帮助追踪数据操作历史。合规性审计:满足行业合规要求(如金融、医疗等)。数据变更回溯:便于问题追溯,特别是当数据被意外修改或删除时。通过启用和实现,你可以轻松地自动化管理这些数据变动的元数据,确保操作的透明性和可追溯性。原创 2025-02-25 16:04:44 · 805 阅读 · 0 评论 -
SpringBoot中报错:JSON parse error: Unrecognized filed 异常原因和解决方案
这表示JSON字符串中包含了一个Java对象中不存在的字段,导致解析失败。JSON字符串中包含了一些字段,但这些字段在Java对象中没有对应的属性。如果JSON中包含嵌套对象或数组,确保Java对象中有对应的嵌套结构。如果可能,直接修改Java对象的属性名,使其与JSON字段名一致。JSON中包含嵌套对象或数组,但Java对象中没有对应的嵌套结构。JSON字符串中的字段名与Java对象的属性名不一致。JSON字段名的大小写与Java对象的属性名不一致。确保JSON字段名与Java对象的属性名一致。原创 2025-02-24 13:00:00 · 1586 阅读 · 0 评论