
Spring
文章平均质量分 71
Spring
abcnull
INTP男,好结交志趣相投的朋友,微信:a463279708,希望能共同努力进步!你们的支持将是我写下去的不竭动力......
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java后端http接口流式输出到前端
Server-Sent Events:服务器发送事件,是一种基于 HTTP 的轻量级协议,允许服务器主动向客户端推送文本数据(如 JSON、纯文本等)如果是你的服务接入了大模型 api,大模型本身做的就是一个流式输出呢?新建高并发/代理外部流式 API → Flux + WebFlux(性能与扩展性更优)后端发送:event: update\ndata: {…代码内部直接承接大模型 api 调用,然后流式输出到前端。每个请求占用一个线程,高并发时资源消耗大。每个请求占用一个线程,高并发时资源消耗大。原创 2025-06-30 12:07:19 · 551 阅读 · 0 评论 -
springboot中@Async做异步操作(Completable异步+ThreadPoolTaskExecutor线程池+@Async注解)
默认情况下,@Async 使用 Spring 的 SimpleAsyncTaskExecutor 线程池(最大线程数为 Integer.MAX_VALUE),一旦请求激增,有可能会导致 cpu 陡增和内存陡增,导致服务崩溃强烈建议自定义线程池!// 核心线程数 executor . setMaxPoolSize(10);// 最大线程数 executor . setQueueCapacity(100);原创 2025-06-01 17:24:03 · 577 阅读 · 0 评论 -
springboot配置cors拦截器与cors解释
其实本质是可以这么理解:具体哪个域名可以请求我的后端服务接口,是由我后端自己控制的,我后端可以控制成让 aaa.com 的域名可以访问,也可以控制成让 bbb.com 的域名可以访问,本质是浏览器先发一个 options 预检请求,通过响应头让浏览器知道能否跨域访问,可以的话就访问了,不可以的话浏览器就报 cors 错误。当浏览器访问 aaa.com 的页面,并向 bbb.com/list 发起请求时,浏览器会先检查是否跨域:由于 aaa.com 和 bbb.com 的域名不同,属于跨域请求;原创 2025-05-29 14:38:10 · 563 阅读 · 0 评论 -
mybatis的mapper对应的xml写法
在MyBatis中,如果不写这样的条件判断,如果是对表的写操作,如 update,其中的 set 中当name参数为null时,生成的SQL语句会直接包含name = null,从而将数据库中的对应字段更新为NULL。如果没写 @Param,MyBatis 默认将未使用 @Param 注解的参数封装为 Map,键名为 param1、param2、…if 是独立的判断,而 choose when 更像 ifelse 逻辑,一旦判断一个满足,后续的 when 就不执行了!是可选的,但如果省略且所有。原创 2025-05-28 20:51:03 · 1351 阅读 · 0 评论 -
springboot中ioc和aop两个核心概念和基本使用
作为 java web 开发者,ioc 和 aop 是两个核心概念需要掌握。原创 2025-05-28 17:02:38 · 525 阅读 · 0 评论 -
java中自定义注解
/ 元注解:定义注解的行为@Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留,可通过反射读取@Target(ElementType.METHOD) // 注解只能用于方法上// 成员变量(带默认值)@Service@LogExecution("创建用户")原创 2025-05-28 16:24:35 · 268 阅读 · 0 评论 -
springboot配置mybatis debug的sql日志输出
在 src/main/resources/log4j2.xml 中配置 MyBatis Mapper 包的日志级别为 DEBUG,并指定输出目标(控制台或文件)开发测试环境你可以配置上这个,方便快速定位问题,生产环境不建议开启,开也是临时开启为了排查线上问题。additivity=“false” 表示不将日志传递给父级 Logger(避免重复输出)实际开发中,生产/开发/测试环境,不同的环境对应各自的 log4j2.xml。原创 2025-05-28 13:50:49 · 383 阅读 · 0 评论 -
springboot中拦截器配置使用
Spring Boot 在启动时会自动扫描所有实现了 WebMvcConfigurer 接口的配置类,并调用其方法(如 addInterceptors)。Spring MVC 会通过反射调用 addInterceptors 方法,将拦截器注册到 Spring MVC 的处理链中。Spring Boot 的拦截器顺序由 InterceptorRegistry.order() 控制,@Order 注解不会生效。postHandle() 和 afterCompletion() 执行顺序,先注册确后执行。原创 2025-05-25 22:53:09 · 581 阅读 · 0 评论 -
springboot中过滤器配置使用
你使用javaspringboot过滤器 filter 用在请求到达 controller 之前或者响应返回给用户之前往往可以用 filter 来做请求的修改,日志、权限、跨域等场景,例如:设置编码和字符集,请求头,状态码等过滤器是在请求进入容器后,但请求进入 servlet 之前进行预处理的,请求结束返回也是,是在 servlet 处理完后,返回给前端之前拦截器可以获取 IOC 容器中的各个 bean,而过滤器就不行,在拦截器里注入一个 service,可以调用业务逻辑。原创 2025-05-25 18:27:18 · 1128 阅读 · 0 评论 -
springboot配置redis lettuce连接池,以及连接池参数解释
如果默认按照 shareNativeConnection = true,Lettuce 会始终使用一个物理连接,所有线程共享这个连接,不会生成第二个新的连接,连接池参数不生效,官方推荐默认值,因为已经适合了大多数场景,单个连接即可满足高并发需求,避免资源浪费。lettuce 连接池的特点是:一个 lettuce 连接可以被多个线程复用,不需要频繁创建连接,其实是通过 Netty 实现了异步非阻塞,单连接即可支持高并发。原创 2025-05-23 18:36:13 · 1400 阅读 · 0 评论 -
springboot配置mysql druid连接池,以及连接池参数解释
空闲连接:当一个连接使用完毕,并通过相应的归还机制(例如关闭连接对象)返回到连接池中时,它就成为了空闲连接,等待下一次被获取和使用。在 springboot 的 application.yml 中配置基本方式。空闲时:定义空闲时,即上一次连接归还,到下一次连接被请求使用 之间的时间。活跃连接:未归还到连接池的。原创 2025-05-23 17:26:42 · 543 阅读 · 0 评论 -
mysql连接池druid监控配置
然后如果项目使用 Servlet 3.0+ 并支持注解,可以通过 Java 配置类注册来代替上方的在 web.xml 中的配置:你可以写一个 DruidWebConfig 类来继承 ServletContextListener,再重写其中 contextInitialized 方法,其中你可以注册 StatViewServlet 和 WebStatFilter,然后再 web.xml 配置一个监听即可。如果你配置了 druid 的一些基本连接池的内容,这里不赘述,那么你肯定引入了 druid 的依赖了。原创 2025-05-23 15:27:30 · 628 阅读 · 0 评论 -
tomcat 目录结构组成
现在非常多的 java web 服务部署在 linux 服务器中,我们服务器中的 tomcat 会有各种文件路径,看下它有哪些文件。原创 2025-04-02 16:52:33 · 464 阅读 · 0 评论 -
springboot+mybatis按条件分页查询多张表
使用 join 进行多表连接查询,使用 pagehelper 分页插件,通过 MyBatis 的。和 JOIN 语句实现多表关联,使用 MyBatis 动态 SQL 标签(如 )处理条件组合。我希望做分页查询用户数据,用户数据为各个表内信息的汇总,并且这个分页查询会根据各种条件来查询。创建一个 mapper 接口 selectUserWithConditions。特殊情况下:如果多张表数据量很大,线上查询流量又大,怎么办?创建 dto 做查询数据接收的对象。那么通常该如何做呢?原创 2025-02-17 20:34:18 · 482 阅读 · 0 评论 -
springboot+mybatis进行普通事务操作transaction
如果你是 mysql 单个数据源,一旦配置好 yml 中的 msyql 和 mybatis 之后,一般对 Service 中的方法上头加上 @Transactional 就可以直接对其开启事务了(通常情况),使用上 @Transactional 表示该方法中如果抛出未捕获的异常时就会触发回滚,这样的异常是 RuntimeException 以及子类或者 error 错误时能回滚,如果是 IOException SQLException 等异常不会回滚。原创 2025-02-12 17:49:13 · 941 阅读 · 0 评论 -
springboot配置mybatis/mybatis plus
使用 mybatis 首先需要写 entity 数据库操作对象// fields如果你使用 mybatis plus,还会有好用的注解来提供 @TableName,@TableField(“name”) 等使用 mybatis 首先需要写 mapper 接口,接口中的方法名和下方待编写的 xml 中的方法名是一样的@Mapper// 自己要写的 function如果你使用 mybatis plus,它提供了一个 BaseMapper 可以继承,继承后其中有许多定义好的基本的数据库操作方法可以使用。原创 2025-02-11 20:21:21 · 1235 阅读 · 0 评论 -
springboot配置redis
配置完成 yml 后,你无需再配置 RedisTemplate 和 StringRedisTemplate 的 Configuration 代码了,因为 Spring Boot 会自动配置 RedisTemplate 和 StringRedisTemplate,你可以直接注入它们来操作 Redis@Bean// 使用StringRedisSerializer来序列化和反序列化redis的key值。原创 2025-02-07 21:14:11 · 366 阅读 · 0 评论 -
springboot配置mysql数据源(单个/多个数据源)
如果你配置单个 mysql 数据源,你完全做 mysql 数据源的 configuration,无需指定数据源和 mapper 包的映射关系,即你只用配置 yml,然后对应接口打上 @mapper 注解,就可以使用 mybatis 提供的 api 来进行数据库的操作,操作数据库 @mapper 标记的接口会自动使用 yml 中配置的唯一的数据源。你使用 springboot 框架,希望配置 mysql 数据源,你可能使用 mybatis 或者 mybatis plus 框架。原创 2025-02-07 20:38:01 · 1426 阅读 · 0 评论 -
springboot启动后初始化执行一批代码
还有一个也比较常用 ApplicationRunner,用起来和 CommandLineRunner 类似。其实 springboot 提供了很多接口来实现这一点,这里用 CommandLineRunner 方式。并且你甚至可以定义多个 CommandLineRunner 实现类,可以通过。应用启动后会立即执行,并且可以访问命令行参数(args)注解或实现 Ordered 接口来影响执行顺序。如果想各种顺序想写在一个类中,你甚至可以这么写。希望在应用启动后执行一些代码逻辑。原创 2025-02-06 17:30:52 · 290 阅读 · 0 评论 -
springboot+mybatis(mybatis plus)分页查询
如果你使用 springboot + mybatis plus,因为 mybatis plus 兼容 mybatis,所以即使你使用 mybatis plus 依然可以用如上方法来做分页查询,当然 mybatis plus 既然是 plus,他自己也有分页查询的一些能力,再往下会有 demo。如果你使用 mybatis 但不是 spring 项目,那么你需要首先引入 pagehelper 相关依赖,然后配置 mybatis-config.xml 分页插件,再然后在代码中使用即可。原创 2025-02-06 16:54:07 · 1178 阅读 · 0 评论 -
springboot项目的单元测试
Spring 中如果 Parent 类中通过 autowire 方式注入 Child 类,然后我在 springTest 测试方法中去 new 这个 Parent,我可以使用到其中的 Child 吗?回答:不行,会导致 Child 是 null,报空指针异常,因为 new 关键字创建的实例不是由 Spring 容器管理的,所以 Spring 不会为这个实例注入任何依赖。在 test 包下编写,对于普通的业务逻辑,直接常规使用 junit 的 @Test 注解即可。这样可以让其成功注入 bean。原创 2025-02-06 14:48:39 · 428 阅读 · 0 评论 -
springboot配置log日志
当然如果你不指定这个路径也可以,因为 springboot 会根据项目引入的日志框架,自动加载 resources 的日志配置文件,比如 springboot 项目是有 spring-boot-starter 的(其中含有 spring-boot-starter-logging),会尝试加载 logback-spring.xml 和 logback.xml 如果二者都不存在,则使用内置的默认 Logback 配置。如下是简单的日志文件配置,使用的是 logback 日志。原创 2025-02-06 14:29:03 · 681 阅读 · 0 评论 -
java远程调试debug
自己随便弄一个 idea 的项目,其中配置 configuration,Remote JVM Debug,输入被调试服务所在的 ip 以及 port。被调试的 java 服务需要开启允许被远程调试的配置,具体就是启动脚本中,加上允许被远程调试以及相应端口。原创 2025-01-11 16:12:44 · 457 阅读 · 0 评论 -
springboot项目无法启动的常见问题
我自己一直认为 springboot + orm 框架对 web 项目做了太过度封装,导致其中一旦出现了一些问题,让开发者很难抹清头脑,很多问题是一些规则上的或者更偏向于底层的问题。但是框架工具的作用的初衷原本又是希望开发者更好的关注“代码创造”,关注要做的东西,而不是把关注点放在解决框架问题,排查底层的规范问题上头看一些问题吧。原创 2024-11-09 10:45:06 · 331 阅读 · 0 评论