spring boot
文章平均质量分 72
小猿、
整洁的代码简单直接,整洁的代码如同优美的散文,整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
XxlJob注解详解与应用指南
@XxlJob 是XXL-Job分布式任务调度框架中的核心注解,用于标记一个方法作为定时任务的执行处理器。通过该注解,开发者可以快速将Spring Bean中的方法注册为可被调度的任务。原创 2025-12-08 10:28:44 · 376 阅读 · 0 评论 -
Spring核心组件:ApplicationEventPublisher详解与实践
本文深入剖析了Spring框架中的核心事件驱动组件ApplicationEventPublisher。作为Spring事件驱动模型的基础接口,它通过观察者模式实现了组件间的解耦,允许事件发布者与监听者无直接依赖通信。文章从接口定义、方法解析、设计思想三个维度展开,详细讲解了传统ApplicationEvent事件和POJO对象的发布机制,并演示了"用户注册"场景下的完整实现流程。通过实际代码示例展示了事件定义、监听器实现和事件发布的标准化操作,同时提供了异步监听、普通对象事件等进阶技巧。原创 2025-12-08 10:28:06 · 1132 阅读 · 0 评论 -
Spring Security6 中 @PostFilter 和 @PreFilter 注解详解
摘要:@PostFilter和@PreFilter是Spring Security提供的安全注解,用于集合/数组的权限过滤。@PreFilter在方法执行前过滤输入参数,@PostFilter在方法执行后过滤返回值。两者基于SpEL表达式,支持权限检查(如hasRole)。需配合@EnableMethodSecurity启用,适用于数据权限控制场景,但要注意性能影响(内存过滤)。可与@PreAuthorize等注解组合使用,通过filterObject访问集合元素,支持多参数过滤(filterTarget)原创 2025-11-13 18:01:36 · 471 阅读 · 0 评论 -
Spring Data JAP中Pageable对象如何从1开始分页,而不是从0开始
在Spring Data JPA中,Pageable的分页默认是从0开始的,即第一页的页码是0。你可以创建一个工具方法,将前端传递的页码(从1开始)转换为Spring Data JPA需要的页码(从0开始)。// 将页码从1开始转换为从0开始// 将页码从1开始转换为从0开始Pageable虽然Spring Data JPA默认从0开始分页,但通过上述方法可以轻松实现从1开始分页的需求。选择哪种方式取决于你的具体场景和偏好。原创 2025-11-13 18:01:07 · 168 阅读 · 0 评论 -
Spring Security6 中 @PostAuthorize 注解详解
摘要: @PostAuthorize是Spring Security提供的方法级安全注解,用于在方法执行后根据返回结果进行权限校验。它基于SpEL表达式,支持使用returnObject变量访问返回值,适合动态权限判断和数据过滤场景。与@PreAuthorize不同,它允许方法先执行再校验权限,但需注意性能影响和副作用。典型应用包括用户数据访问控制、敏感信息过滤和复杂业务规则验证。使用时需通过@EnableMethodSecurity启用,并可与@PostFilter配合处理集合返回值。原创 2025-10-14 09:00:00 · 823 阅读 · 0 评论 -
@SneakyThrows 注解详解:应用场景与示例代码
本文介绍了Lombok的@SneakyThrows注解在Java异常处理中的使用。该注解允许开发者在不声明throws子句的情况下抛出checked异常,通过字节码操作生成try-catch块将异常包装为RuntimeException抛出。文章详细讲解了基本用法、指定异常类型的方法,以及在函数式接口、测试方法和模板方法模式中的应用场景。同时强调应谨慎使用,建议配合文档说明和上层异常处理,避免过度使用导致代码可读性降低。最后指出@SneakyThrows虽然简化了代码,但不能替代合理的异常处理责任。原创 2025-10-13 15:13:11 · 1143 阅读 · 0 评论 -
Spring AOT 详解:原理、应用场景与实战指南
Spring AOT(Ahead-of-Time)是一种在构建时对Spring应用进行优化的技术,主要为GraalVM原生镜像生成配置,同时提升传统JVM的启动性能。相比传统JVM模式,AOT具有极速启动(毫秒级)、低内存占用等优势,适用于云原生、Serverless等场景。AOT通过代码生成和运行时提示优化应用,包含Bean定义、反射配置等核心组件。典型应用包括构建CLI工具、资源受限环境等。通过Maven配置和GraalVM工具链,开发者可轻松构建原生镜像应用,实现显著性能提升。最佳实践包括避免运行时反原创 2025-09-25 17:05:08 · 1250 阅读 · 0 评论 -
Spring 6 的 @HttpExchange 注解:声明式 HTTP 客户端的现代化利器
Spring Framework 6和Spring Boot 3引入了声明式HTTP客户端@HttpExchange,通过接口注解简化REST API调用。核心注解包括@GetExchange、@PostExchange等对应HTTP方法,支持路径参数和请求体。相比RestTemplate/WebClient,它减少模板代码,提升可读性和可测试性。使用步骤:1)添加WebFlux依赖;2)定义带@HttpExchange的接口;3)通过WebClient配置启用;4)注入使用。支持错误处理、请求拦截等高级特原创 2025-09-25 10:33:58 · 1580 阅读 · 0 评论 -
Spring Boot启动报错:Failed to configure a DataSource 全面解析与解决方案
SpringBoot应用启动时出现"Failed to configure a DataSource"错误,通常是由于数据库配置缺失或不当导致。解决方案分三种情况:1)需要真实数据库则需添加驱动依赖并配置连接信息;2)无需数据库功能时可排除数据源自动配置;3)开发测试环境可使用H2内嵌数据库。排查时需检查依赖、配置、profile匹配和数据库服务状态,根据实际需求选择对应方案即可解决问题。原创 2025-09-23 18:09:06 · 1156 阅读 · 0 评论 -
Spring Boot请求体缺失异常分析与解决方案
SpringBoot应用出现"Required request body is missing"异常,表明UserController的edit方法缺失了预期的UserUpdatePwdDTO请求体。该问题主要由前端未发送请求体、Content-Type设置错误或后端缺少@RequestBody注解导致。解决方案包括:前端确保正确设置JSON请求头和请求体;后端可添加@RequestBody(required=false)参数验证、增强全局异常处理,或优化DTO类验证规则。预防措施应包含原创 2025-09-23 17:35:10 · 537 阅读 · 0 评论 -
@RestControllerAdvice 开启后访问 knife4j 地址/doc.html 报错问题解决
摘要:本文针对SpringBoot项目中同时使用@RestControllerAdvice全局异常处理和knife4j接口文档时出现的兼容性问题进行分析。当访问/doc.html时出现NoSuchMethodError错误,原因是knife4j 4.4.0版本与SpringBoot 3.4.3不兼容。解决方案是升级knife4j至4.6.0版本,该版本适配了ControllerAdviceBean类的新构造器,从而解决兼容性问题。本文通过具体案例展示了框架版本冲突的排查思路和解决方法,为开发者处理类似兼容性原创 2025-09-18 10:26:05 · 512 阅读 · 0 评论 -
Spring Security AuthenticationManager 接口详解与实战
Spring Security框架中的AuthenticationManager接口是认证体系的核心,负责验证用户身份。该接口定义简洁,仅包含authenticate()方法,用于处理认证请求并返回包含完整用户信息的Authentication对象或抛出异常。实际应用中通常使用ProviderManager实现类,它通过委托多个AuthenticationProvider来处理不同认证类型。本文详细介绍了AuthenticationManager的工作原理、应用场景(如表单登录、API认证等)原创 2025-09-08 14:55:26 · 1407 阅读 · 0 评论 -
深入理解 @FeignClient 注解:应用场景与实战示例
本文详细介绍了Spring Cloud Feign中@FeignClient注解的使用方法。@FeignClient作为声明式HTTP客户端,简化了微服务间的通信流程,支持服务发现、负载均衡和熔断降级。文章解析了注解的核心属性(如name、url、fallback等),阐述了其应用场景(服务调用、API网关等),并通过多个实战示例展示了基础使用、服务降级、自定义配置和第三方API调用等典型用法。最后强调了使用时的注意事项,包括服务名称一致性、异常处理和超时配置等。@FeignClient能有效提升微服务开发原创 2025-09-04 15:53:26 · 2066 阅读 · 0 评论 -
深入浅出数据库事务:从原理到实践,解决 Spring 事务与外部进程冲突问题
本文深入探讨了事务在软件开发中的核心作用与常见问题。首先解析了事务的ACID四大特性(原子性、一致性、隔离性、持久性)及其重要性,介绍了不同隔离级别的适用场景。重点分析了Spring事务管理机制,包括@Transactional注解的关键属性和事务传播行为,特别指出了事务与外部进程(如pg_restore)冲突的常见问题及解决方案(如使用NOT_SUPPORTED传播行为)。文章还总结了8种事务失效场景和优化建议,强调合理配置事务对系统稳定性和性能的重要性。通过实际案例,帮助开发者规避事务管理中的典型陷阱。原创 2025-09-02 17:17:46 · 869 阅读 · 0 评论 -
Java17多线程可见性详细讲解以及问题,为什么用它?
本文探讨了Java多线程编程中的可见性问题及其解决方案。可见性指线程对共享变量的修改能否被其他线程及时看到,主要受CPU缓存架构和指令重排序影响。Java通过JMM内存模型和happens-before规则保证可见性,提供了volatile、synchronized、final和原子类等解决方案。Java17对volatile和ThreadLocal进行了优化,并引入更严格的内存模型。最佳实践包括优先使用final、合理选择同步机制和避免常见误区。理解这些原理对于编写正确的并发代码至关重要。原创 2025-08-14 15:53:17 · 1282 阅读 · 0 评论 -
Spring中的BeanFactoryAware接口详解,应用场景和示例代码
摘要:BeanFactoryAware是Spring框架的核心接口,允许Bean获取创建它的BeanFactory引用。主要应用于编程式访问容器、延迟加载、框架扩展等场景。通过实现setBeanFactory方法,Bean可动态查找其他Bean或查询容器信息。相比ApplicationContextAware,它提供更基础的功能。使用时需注意避免过度耦合,优先考虑依赖注入,仅在特殊场景下使用该接口。典型应用包括支付系统等需要动态选择实现类的场景,但应封装使用并添加充分文档说明。原创 2025-08-13 11:30:13 · 423 阅读 · 0 评论 -
Spring中的BeanDefinition接口详解,应用场景和示例代码
本文介绍了Spring框架中的核心接口BeanDefinition,它定义了Bean的配置元数据,包含类名、作用域等创建实例所需的所有信息。文章详细解析了BeanDefinition的层次结构、核心属性(如beanClassName、scope等)和方法,并展示了编程式注册Bean、动态修改定义等应用场景。还探讨了高级应用如条件化注册、动态代理等,以及与BeanDefinitionRegistry等接口的协作。最后指出,虽然日常开发多使用注解配置,但深入理解BeanDefinition能增强对Spring容原创 2025-08-13 11:29:55 · 609 阅读 · 0 评论 -
Java 17 中的 Collections 类介绍、应用场景和示例代码
是 Java 集合框架中的一个工具类,提供了一系列静态方法,用于对集合(如ListSetMap)进行高效操作、算法实现和线程安全包装。原创 2025-08-12 10:26:27 · 404 阅读 · 0 评论 -
Mysql联表查询索引失效问题及优化方案
《数据库联表查询索引失效分析与优化方案》针对大型数据库中JOIN操作性能下降问题,系统分析了六大核心原因:连接字段无索引、数据类型不匹配、复合索引顺序不当等。提出三级优化策略:基础层面确保连接字段正确索引;中级策略采用覆盖索引和查询重写;高级方案结合参数调优。通过电商订单案例演示优化过程,强调定期维护和监控的重要性,并给出索引设计三原则与查询编写规范。该方案可有效解决索引失效问题,提升大数据量下的联表查询性能。原创 2025-08-12 10:25:47 · 1178 阅读 · 0 评论 -
Java中公用字符串工具类拿走、直接用
摘要:StringUtils是一个全面的Java字符串操作工具类,提供了100多个静态方法,涵盖了字符串处理的8大核心功能:空值/空白检查、截取与分割、连接与拼接、转换与格式化、搜索与比较、编码与加密、校验与验证、统计与分析。该工具类采用空值安全设计,使用StringBuilder优化性能,默认UTF-8编码,并预编译正则表达式。适用于数据清洗、输入验证、文本分析、安全处理和数据转换等场景,可显著提升开发效率。用户可直接使用或根据需求扩展功能。原创 2025-08-05 16:19:11 · 566 阅读 · 0 评论 -
Spring Boot 应用启动错误分析与解决方案:MinIO 时间同步问题
**摘要:**SpringBoot应用启动失败,根源是MinIO连接异常。错误链显示从Shiro安全框架到MinIO客户端的依赖注入失败,最终发现是客户端与MinIO服务器时间不同步(差异20分钟),触发RequestTimeTooSkewed错误。解决方案包括同步系统时间(NTP服务)、检查服务器时间、添加代码容错机制,特别需注意虚拟机/容器环境的时间同步问题。该问题揭示了分布式系统中时间同步对云存储服务认证的关键作用,建议部署时配置NTP服务并建立时间监控机制。 (149字)原创 2025-08-05 16:17:17 · 543 阅读 · 0 评论 -
JUnit 4.13.2 单元测试框架全面指南
JUnit4是Java单元测试的主流框架,4.13.2是其最终版本。摘要介绍了其核心组件和注解(如@Test、@Before等),详细讲解了断言方法和测试规则应用,包括参数化测试和测试套件组织,并提供了Calculator测试示例。文章还分析了JUnit4生命周期和常见问题解决方案,建议新项目使用JUnit5,但强调掌握JUnit4对维护遗留系统的重要性。全文约150字,系统梳理了JUnit4的核心功能与最佳实践。原创 2025-08-01 13:30:16 · 614 阅读 · 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 · 1444 阅读 · 0 评论 -
Java中Flux类详解:响应式编程的核心组件
Flux是Reactor框架中实现响应式编程的核心类,代表能发射0-N个元素的异步数据流。它遵循响应式流规范,支持背压机制,提供丰富的操作符进行数据转换、过滤和组合。Flux可通过静态方法创建,支持冷/热发布模式,并能在不同调度器上执行。在Spring WebFlux和数据处理管道中广泛应用,与Mono形成互补。使用时需注意阻塞操作避免、操作符链优化和合理选择调度器等性能考量。通过StepVerifier可方便测试Flux流。Flux为构建高性能异步应用提供了强大支持。原创 2025-07-30 16:48:25 · 2049 阅读 · 0 评论 -
Spring Boot 防重放攻击全面指南:原理、方案与最佳实践
本文介绍了SpringBoot防御重放攻击的多种方案。重放攻击通过重复发送合法请求实施攻击,常见于金融、电商等场景。文章详细解析了三种防御方案:时间戳+签名方案(确保请求时效性)、Nonce方案(使用一次性令牌)、序列号方案(验证请求连续性),并提供了核心代码实现。建议采用组合防御策略,配合HTTPS、请求校验等基础措施,构建多层次防护体系。不同方案各有优缺点,需根据业务场景灵活选择。最后强调应建立监控体系,定期进行安全审计,持续更新防护措施。原创 2025-07-29 14:24:43 · 1563 阅读 · 0 评论 -
Spring Boot 简单接口角色授权检查实现
摘要:本文介绍了一种轻量级SpringBoot接口权限控制方案,采用自定义注解+拦截器方式实现。核心实现包括:1)定义@RequiredPermission注解标记权限;2)创建拦截器检查用户权限;3)注册拦截器配置拦截路径。方案特点为零依赖、代码简洁(不足100行)、易于扩展,支持RESTful风格的403响应。文中提供了完整代码示例和测试方法,适用于快速开发场景,并建议了JWT整合、权限缓存等优化方向。该方案在满足基本安全需求的同时保持了低侵入性,可作为中小型项目的轻量级安全解决方案。原创 2025-07-29 14:23:51 · 549 阅读 · 0 评论 -
Spring Framework 中的 ApplicationContext 类详解
Spring核心容器ApplicationContext解析 摘要:ApplicationContext是Spring框架的核心接口,作为IoC容器管理所有Bean及其依赖关系。它继承自BeanFactory并扩展了国际化、事件发布、资源加载等企业级功能。文章详细介绍了其继承体系、核心功能(Bean管理、资源访问等)、常用实现类(如ClassPathXmlApplicationContext)以及与BeanFactory的关键区别。同时涵盖了容器生命周期、层次化结构、环境配置等高级特性,并提供了Web应用、原创 2025-07-02 13:37:52 · 997 阅读 · 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 · 1214 阅读 · 0 评论 -
在多个SpringBoot程序中./相对路径下隐患、文件覆盖问题
两个 Spring Boot 应用生成的配置文件被覆盖,是因为 相对路径的解析依赖于当前工作目录(Working Directory),而你可能在运行应用时未正确设置各自的工作目录。根本问题在于 相对路径的解析依赖于当前工作目录,而两个应用运行时的工作目录被误设为同一位置。通过使用绝对路径、类路径资源或动态生成唯一路径,可以彻底避免文件覆盖问题。建议优先采用 方案 2(类路径资源)或 方案 3(用户目录)确保路径隔离。原创 2025-05-16 16:55:43 · 395 阅读 · 0 评论 -
报错:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error 快速排查解决
通常是由于 JSON 反序列化失败导致的。原创 2025-05-16 16:55:01 · 3473 阅读 · 0 评论 -
Spring AI介绍、应用场景和示例代码
Spring AI 是 Spring 生态中整合 AI 能力的标准方式,适合企业应用、安全可控地使用 AI,构建智能应用。它抽象了底层 API 调用,让开发者专注业务逻辑。原创 2025-05-07 11:17:47 · 1719 阅读 · 0 评论 -
OAuth2AuthorizationEndpointFilter类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器中的核心过滤器,负责处理 OAuth2 授权码授权流程中的端点请求。// 查询客户端信息// 解析scope// 用户同意授权" +} else {// 用户拒绝授权" +@Beanhttp// 自定义认证转换器@Override// 自定义转换逻辑= null) {// 处理自定义参数// 默认处理@Beanhttp// 自定义成功处理器。原创 2025-04-25 15:53:14 · 930 阅读 · 0 评论 -
OAuth2TokenEndpointFilter类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器中的一个关键过滤器,负责处理 OAuth2 令牌端点(Token Endpoint)的请求。它是 OAuth2 授权服务器实现的核心组件之一,用于处理各种授权类型的令牌请求。@Bean// 自定义认证转换器,添加密码模式支持new OAuth2PasswordAuthenticationConverter() // 自定义的密码模式转换器@Override// 添加自定义响应头// 调用默认实现添加新的授权类型。原创 2025-04-25 15:52:21 · 552 阅读 · 0 评论 -
OAuth2RefreshTokenAuthenticationConverter类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器中的一个认证转换器,专门用于处理 OAuth2 刷新令牌(Refresh Token)的请求。它实现了接口,负责将 HTTP 请求转换为认证对象。@Override// 先调用默认实现// 添加自定义逻辑,如验证额外的参数= null) {@Beannew CustomRefreshTokenAuthenticationConverter(), // 使用自定义转换器))原创 2025-04-23 11:07:58 · 480 阅读 · 0 评论 -
OAuth2AuthorizationEndpointConfigurer类介绍、应用场景和示例代码
是 Spring Security OAuth2 授权服务器模块中的一个重要配置类,用于配置 OAuth2 授权端点(/oauth2/authorize)。@Beanhttp// 可以修改默认的转换器列表})// 自定义认证转换器@Override// 自定义转换逻辑@Beanhttp// 可以修改默认的提供者列表})// 自定义认证提供者@Override// 自定义认证逻辑@Override@Beanhttp// 自定义验证逻辑。原创 2025-04-18 15:51:32 · 552 阅读 · 0 评论 -
OAuth2AuthorizationServerConfiguration类介绍、应用场景和示例代码
这个类来自包,是 Spring Boot 自动配置 OAuth2 授权服务器的核心类。@Bean作用:提供客户端注册信息的存储仓库条件:当没有其他Bean存在时才创建:只有当配置了注册客户端时才创建实现:使用内存存储 (),适合开发和测试环境。原创 2025-04-16 17:23:15 · 560 阅读 · 0 评论 -
OAuth2AuthorizationServerWebSecurityConfiguration类介绍、应用场景和示例代码
类是 Spring Boot 自动配置 OAuth2 授权服务器 Web 安全的核心类,负责配置授权服务器的安全过滤链。@Bean// 自定义授权端点访问规则@Bean@Order(Integer.MIN_VALUE + 1) // 在授权服务器过滤器之后。原创 2025-04-16 17:22:27 · 386 阅读 · 0 评论 -
Mysql数据库中锁的介绍、应用场景和示例代码
在 MySQL 数据库中,锁是用于管理并发访问的重要机制,确保数据的一致性和完整性。MySQL 提供了多种锁机制,包括表级锁和行级锁,每种锁都有其特定的应用场景。以下将详细探讨 MySQL 锁的应用场景、原理、实战示例,以及为什么选择 MySQL 锁而不是其他锁。原创 2025-04-11 11:11:13 · 882 阅读 · 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 · 545 阅读 · 0 评论 -
LoadingCache类介绍、应用场景和示例代码
是 Google Guava 库中的一个重要缓存实现,它提供了自动加载和缓存管理的功能。原创 2025-04-14 10:00:00 · 1085 阅读 · 0 评论
分享