![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 81
spring 实战代码示例
编程经验分享
码农,Java开发工程师,软件设计师
展开
-
Spring Boot 同一个方法中操作多个数据源保证事务一致性
工作中开发过多数据源的系统,比如资产清查系统,数据的存储分成了两个库,一个当前库和归档库,系统就需要配置两个数据源来满足业务需求。在常规的业务场景下,对两个库的业务操作是分开的,井水不犯河水。但是有一个功能实现是个例外,就是归档。将当前库的数据进行归档,需要修改当前库数据的状态,并将当前库数据插入到归档库中,这就需要在同一个方法实现中同时操作两个数据源,直接使用声明式事务@Transcation注解是无法保证两个事务的一致性的。原创 2024-09-02 08:00:00 · 906 阅读 · 0 评论 -
Spring Boot 多数据源配置(JPA)
一般一个系统至少有一个数据源,用来持久化业务数据以及查询。单个数据源的系统很常见,在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下,只需要在配置文件中简单配置下数据库连接信息就行了。除了单数据源系统,在实际工作中,还会遇到多数据源系统。原创 2024-09-02 00:15:00 · 949 阅读 · 0 评论 -
基于 Redis 的分布式锁 Spring Boot 集成 Redisson 使用分布式锁确保对共享资源的互斥访问
工作中开发过一个上传文件的接口,每个区县都有自己的资源压缩包需要上传到系统,系统接收到压缩包后,需要解压,提取出里面的文件保存到文件服务器中,解析里面的SQLITE文件得到数据保存到数据库中。由于处理的过程会比较耗时,所以使用了异步处理的方式来优化用户体验,接口接收到文件后快速响应,返回上传成功,异步线程在后台继续执行解析压缩包业务逻辑。为了防止在异步线程处理期间,用户再次上传压缩包,从而导致上传资源数据不一致问题,在异步线程处理期间要获取锁来保证上传资源数据一致。原创 2024-08-07 00:24:21 · 1055 阅读 · 0 评论 -
基于 Redis 的分布式信号量 Spring Boot 集成 Redisson 使用 Semaphore 控制并发访问数量
工作中开发过一个服务,这里记作A服务,主要功能是配置,部署以及调用云函数。其中配置云函数的功能里,有一个配置项是并发数,意思是同一时间最多能有多少个请求调用已部署的云函数。客户端通过调用A服务,再由A服务去调用云函数,从而实现客户端请求云函数的功能。在调用云函数时,是要根据配置的并发数控制请求的数量。如果时单机架构的话,直接使用JDK中的 Semaphore 就能够实现并发线程控制了。但是项目的架构是微服务架构,所以需要使用分布式信号量才行。原创 2024-08-06 09:00:00 · 1034 阅读 · 0 评论 -
Spring Boot 动态数据源
大多数系统中,都需要数据库来持久化数据,在大多数情况下,一个系统只需要配置一个数据源便能够完成所有业务的查询,保存操作。也存在一个系统需要多个数据源的情况,不同的数据源对应不同的业务操作,这种场景下配置多个数据源,并且在代码中维护多套dao层就可以了。还存在一种业务场景,所有的业务操作都是一样的,只有操作的数据源的不同,如果用多套dao层来实现,由于业务操作都一样,会出现多块一模一样的代码,这样的冗余代码是我们不希望看到,不利于维护。这种业务场景就很适合用动态数据源来实现。原创 2024-08-01 22:38:36 · 724 阅读 · 0 评论 -
Spring Boot 使用 Spring AI 构建知识库服务
做 AI 大模型技术调研时,参考的开源项目 Maxkb,它基于大模型做了一个的应用,用户可构建自己的知识库,创建自己的应用然后关联知识库,这样可以基于知识库里的内容让大模型的回答更加符合我们地预期。虽然 Maxkb 是使用 Python 写的,不过参考它用到的相关模型和数据库,可以用 Spring Boot 来构建一个自己的知识库服务。Spring Boot 也提供了 AI 相关的库,这使得接入 AI 大模型能力也十分方便。以下是使用Spring Boot 构建一个知识库的样例。原创 2024-08-01 01:01:31 · 1336 阅读 · 0 评论 -
SpringBoot 全局异常处理和接口入参校验
使用 spring boot 开发 web 项目时,基本上每一个接口都要做异常捕捉处理和入参校验,如果每个都硬编码在每个接口中,会导致程序中存在大量重复的代码。原创 2024-03-08 00:15:00 · 1033 阅读 · 0 评论 -
SpringBoot 上传下载文件接口代码示例
springboot做的CRUD项目中最常见的需求:上传文件和下载文件,代码基本上都差不多,记录一下,方便复用。原创 2024-03-02 21:01:09 · 774 阅读 · 0 评论