热门 最新 精选 话题 上榜
在 Spring MVC 中,@RestControllerAdvice 可以全局处理控制器的异常、参数绑定、数据预处理等逻辑。结合 @InitBinder 注解,它能实现全局的参数预处理和数据绑定规则,避免在每个控制器中重复定义。参数预处理指在参数被绑定到目标对象之前,对原始请求参数进行的加工、转换或校验操作。目的是将原始参数 “整理” 成符合目标类型要求的格式,避免绑定失败。 常见场景: 类型
原创 14天前
83阅读
@ControllerAdvice/@RestControllerAdvice 是 Spring 框架中用于全局处理 REST 接口异常、统一响应格式、数据绑定增强的注解。他们的工作原理基于 Spring 的 AOP(面向切面编程)机制。全局异常处理@ExceptionHandler 是 Spring 框架中用于捕获并处理特定异常的注解,需搭配 @ControllerAdvice 或 @RestC
原创 15天前
133阅读
第一种--快速创建应用 可以直接下载示例项目,链接:://github.com/apache/dubbo-samples/tree/master/11-quickstart 第二种--新建项目 新建 Java 空白 Maven 项目 jdk17 之后我们还需要创建 dubbo-spring ...
15天前
367阅读
Dubbo入门-通过spring-boot来动手实践
请求作用域(Request scope)Spring 会为每个 HTTP 请求创建一个 Bean 类的实例,该实例仅在这个特定的 HTTP 请求范围内存在。同一个请求内的所有组件(如控制器、服务层)共享该 Bean 实例,不同请求间的实例相互隔离。Bean 的实例在每次 HTTP 请求创建,请求处理完成后销毁。常用于存储当前请求的参数、 headers 等信息,供请求处理链路中的多个组件使用。Sp
原创 17天前
40阅读
首先使用 Spring Initializr 创建一个 Spring Boot 项目,选择 Spring Boot DevTools、Spring Web、Thymleaf 三个依赖。Spring Boot DevTools 的作用是提升开发效率,简化开发过程中的重复操作。使用 Spring Boot Devtools 后当项目代码(如 Java 类、配置文件)发生修改并保存时,DevTools
原创 18天前
53阅读
在需要文本转语音(TTS)的应用场景中(如语音助手、语音通知、内容播报等),Java生态缺少类似Python生态的Edge TTS 客户端库。不过没关系,现在可以通过 UnifiedTTS 提供的 API 来调用免费的 EdgeTTS 能力。同时,UnifiedTTS 还支持 Azure TTS、MiniMax TTS、Elevenlabs TTS 等多种模型,通过对请求接口的抽象封装,用户可以方
原创 19天前
72阅读
Spring Boot 集成免费的 EdgeTTS 实现文本转语音
在实际应用中,一个方法通常会被多个切面拦截。例如,我们有一个方法,既需要记录其执行日志,又需要应用一些安全限制。这类职责通常由专门的切面来处理,因此在该场景下,会有两个切面作用于同一个方法的执行过程。同时使用多个切面没有任何问题,但有时切面的执行顺序非常重要,因为有些切面会控制切入点方法的执行,比如鉴权的切面在鉴权失败后便不会继续执行切入点方法。这种情况下其他切面可能就没有机会执行了。// Use
原创 精选 19天前
346阅读
通过注解匹配切入点Spring 除了通过包名、类名、方法名、方法签名等匹配切入点外,还可以通过自定义注解的方式来实现,通过这种方式可以更简单灵活的匹配切入点。使用注解实现起来也很简单:定义一个自定义注解,通过这个注解来标记某个方法为切入点,然后在切面中通过表达式来匹配切入点。// ToLog.java // 定义自定义注解,用来标识一个方法为 ToLog 的切入点 @Target(ElementT
原创 20天前
43阅读
// 定义日志切面 @Aspect public class LoggingAspect { // 定义日志记录器 private final Logger logger = Logger.getLogger(LoggingAspect.class.getName()); // 定义日志环绕通知 @Around("execution(* dev.xyz.service.*.*(
原创 精选 20天前
360阅读
面向切面编程(Aspect-Oriented Programming,简称 AOP)是一种编程范式,核心思想是将程序中分散在各个模块中的重复逻辑(如日志、事务、权限验证等)抽离出来,形成独立的 “切面”,再通过特定方式 “织入” 到业务逻辑中,从而实现代码复用、降低耦合度。面向切面编程的基本概念: 切面:需要在执行特定方法时触发的逻辑。比如“所有 Service 层的方法被调用前,先执行权限校验代
原创 21天前
217阅读
若依是一款基于SpringBoot的流行权限管理系统,提供用户、角色、菜单等企业级功能模块,严格遵循三层架构设计。核心版本包括单体应用版、前后端分离版(主流推荐)和微服务版,支持不同技术栈需求。系统具有开箱即用、高度可定制、强大代码生成器等优势,集成RBAC权限控制、系统监控、操作日志等特性。采用SpringBoot+MyBatis-Plusue等技术栈,适合快速开发各类后台管理系统,是学习和项目实践的优秀选择。
Spring Boot 项目的部署可以使用 Tomcat,但并非只能用 Tomcat。具体取决于项目的配置和需求,主要分为两种情况:** 内置服务器部署 (默认)和外部服务器部署 **。 一、默认:内置 Tomcat 部署(最常用) Spring Boot 的 spring-boot-starter ...
22天前
317阅读
1. 概述 越来越多的现代应用开始集成大型语言模型(LLM),以构建更智能的功能。如何使用Spring AI快速整合LLM能力到自己的Spring Boot应用,在之前的博文中有过很多篇关于使用Spring AI使用不同供应商LLM的整合案例。虽然一个 LLM 能胜任多种任务,但只依赖单一模型并不总是最优。 不同模型各有侧重:有的擅长技术分析,有的更适合创意写作。简单任务更适合轻量、性价比高的模型
原创 22天前
110阅读
网关路由与登录校验实现 本文介绍了网关的基本概念及其在微服务架构中的核心作用,重点讲解了如何通过Spring Cloud Gateway实现路由配置和登录校验功能。主要内容包括: 网关路由配置:通过YAML文件定义路由规则,实现请求路径到微服务的映射,支持负载均衡(lb://)和服务发现(Nacos) 路由属性配置:包括路径匹配、请求头过滤等路由属性设置,以及全局过滤器的实现方式 登录校验机制: 采用GlobalFilter实现全局登录校验逻辑 通过自定义GatewayFilterFactory创建可配置的
别人写的分页助手插件 1.如果没有使用springboot 导入依赖 在核心配置文件中加入拦截器 使用 如果你使用了这个依赖,那么sql代码你就可以不用写limit 但是在查询之前,一定将分页功能开启,你只有开启了,你才会有机会使用人家的分页, 注意注意,在执行分页之前一定一定开启分页功能 怎么开启 ...
 域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。阿里云域名服务是集域名注册、交易、解析、监控和保护为一体的综合域
23天前
408阅读
前言在平时工作中,我们需要对相关日志进行分析,随着平台的允许,日志会越来越大,不便于分析,此时我们需要将日志写入es,在这个过程中logstash起到中间转发的作用,类似于ETL工具。1、搭建EL环境(此处没有使用Kibana)(1)、安装es(5.6.16)下载地址:https://elasticsearch.cn/download/(2)、安装logstash下载地址:https://elas
spring boot 集成netty,及其一些基本概念
5.17问题:eclipse中Servlet类出现ClassNotFoundException,类已存在 解决:未导入target runtime问题:tag jsp:setProperty must be empty, but is not 解决:加上结束标签 5.19eclipse中,jsp编译后 servlet源文件的位置为: eclipse目录workspace.metadata.
vs code使用方法
原创 29天前
311阅读
vs code使用技巧
这两个类在Spring Security中扮演着不同但互补的角色,它们处理的是安全验证过程中的不同阶段的异常。让我详细解释它们的差异和作用:1. MyAuthenticationEntryPoint(认证入口点)功能作用:处理认证失败:当用户未认证或认证信息无效时触发认证的第一道关卡:检查用户是否已经登录触发场景:// 以下情况会触发 AuthenticationEntryPoint: 1. 用户
原创 1月前
100阅读
Spring 应用中 bean 的作用域通常有两种:单例(singleton)和原型(prototype)。Spring 创建的 bean 默认使用单例作用域,也是开发中最常用的。Spring 中的单例和设计模式中的单例模式有一些区别,设计模式中的单例模式是一个类型的实例在整个应用中只有一个,而在 Spring 中可以存在多个实例,但每个实例都有唯一的名称,即某个类型的某个名字的实例在应用中只有一
原创 1月前
103阅读
互联网阅读浪潮汹涌,纸质图书与电子资源并存,高校与社区图书馆每日产生海量借还、预约、盘点、推荐等数据。传统 Excel 或单机版软件已无法应对高并发、多终端、即时统计的场景,错架、漏借、超期、信息孤岛等问题频出。借助 SpringBoot 快速开发优势,把 Java 稳健性与 MySQL 高可用特性融合,打造一套前后端分离、插件化扩展、可移动端访问的图书管理生态,成为毕业设计的热门方向。系统以“让每本书快速找到读者,让读者精准发现好书”为核心理念,覆盖从资源入库到阅读反馈的全生命周期。 亮点功能一览: 个人
RabbitMQ 是一个实现了AMQP(高级消息队列协议)的消息队列,最初起源于金融系统,主要用来实现应用程序间的异步和解耦,可用于在分布式系统中做消息的存储转发相比于传统的队列服务概念(消息发送者、队列、消息接收者),RabbitMQ在发送者和队列之前增加了一个抽象层——交换器。消息发送者发消息给交换器,交换器根据调度策略把消息发送给队列(交换器和队列之间有绑定关系),这样发消息者和队列就没有直
之前在Spring Boot教程中我们介绍了如何用 @Scheduled 注解来创建定时任务,Spring 的任务调度用起来确实顺手。可这种实现方式一上多实例(比如多副本部署),同一个定时任务会在每个节点都跑一遍,等于任务会重复执行。 原因很简单:默认情况下,Spring 不会在多个实例之间做调度同步。 这篇文章就聊聊怎么用 ShedLock,让定时任务在多实例环境下“同一时刻只跑一次”。顺便一提
原创 1月前
79阅读
spring-boot-starter-mail 邮件发送 Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。 开通POP3/SMTP服务或者IMAP/S
1月前
403阅读
关联 @Bean 注解方法的 bean,假如现在有两个类 User 和 Car,User 拥有一个 Car:// User.java public class User { private String name; private int age; private Car car; // getters、setters ... } // Car.java public
原创 1月前
177阅读
Spring 创建 bean 通常有三种方式:通过 @Bean 注解创建通过 stereotype 注解创建编程式创建通过 @Bean 注解创建假如现在有一个 User 类,需要创建 User 类的 bean:public class User { private String name; private int age; public User(String name, int a
原创 1月前
87阅读
这段代码 scope: contact:user.phone:readonly 是 OAuth2 授权作用域(scope)的声明,特别针对飞书开放平台的权限系统。让我详细解释它的结构和含义:? 完整解析contact:user.phone:readonly └──┬──┘ └──┬──┘ └──┬──┘ │ │ └─ 操作权限 │