Spring
文章平均质量分 84
spring 实战代码示例
编程经验分享
码农,Java开发工程师,软件设计师 | 个人主页:http://hclu.space/bookshelf/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Boot 依赖注入为 null 问题
可以看到它实现了 SmartInstantiationAwareBeanPostProcessor 接口,BeanPostProcessor 接口,就是用于 Spring 创建实例后做后置处理的,这里就是用来创建 AOP 代理对象。Spring 容器在实例化bean后,就会通过 postProcessAfterInitialization 来做 bean 的后置处理。原创 2024-10-22 09:44:50 · 2243 阅读 · 0 评论 -
Spring Boot 配置文件(yml、properties | bootstrap、application)加载顺序
Spring 使用”约定大于配置“思想,简化了开发过程,提高了开发效率。不过只是简化了配置项,并不是完全不需要配置文件了,所以在实际开发中也需要根据实际情况,进行一些额外的配置来满足特定的需求。在实际项目中,可能会看到各种各样的配置文件:要想知道写在配置文件里的配置项是否生效,就需要了解 Spring 框架是否会加载该配置文件,以及配置文件的加载顺序。原创 2024-10-21 10:07:46 · 2746 阅读 · 0 评论 -
Spring Boot 基于 Mockito 单元测试
在网上刷到过“水货程序员”相关的帖子,列举了一些水货程序员的特征,其中一条就是不写单元测试,或者不知道单元测试是啥。看得瑟瑟发抖,完全不敢说话。在小公司里当开发,对单元测试根本没有要求,测试也就是本地启动服务,自己调下接口看看是否调通,以及和前端本地联调。毕业后入行以来都没写过,想写也不知道该怎么做。自己想摆脱“水货程序员”标签去写单元测试,也只是照着网上博客,本地写一写,不知道写得是否规范,所以从没提交过单元测试代码。后面跳槽,项目有要求写单元测试了,这就有能够参考的单元测试代码了。原创 2024-09-29 21:44:18 · 1857 阅读 · 0 评论 -
Spring Boot 同一个方法中操作多个数据源保证事务一致性
工作中开发过多数据源的系统,比如资产清查系统,数据的存储分成了两个库,一个当前库和归档库,系统就需要配置两个数据源来满足业务需求。在常规的业务场景下,对两个库的业务操作是分开的,井水不犯河水。但是有一个功能实现是个例外,就是归档。将当前库的数据进行归档,需要修改当前库数据的状态,并将当前库数据插入到归档库中,这就需要在同一个方法实现中同时操作两个数据源,直接使用声明式事务@Transcation注解是无法保证两个事务的一致性的。原创 2024-09-02 08:00:00 · 4385 阅读 · 0 评论 -
Spring Boot 多数据源配置(JPA)
一般一个系统至少有一个数据源,用来持久化业务数据以及查询。单个数据源的系统很常见,在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下,只需要在配置文件中简单配置下数据库连接信息就行了。除了单数据源系统,在实际工作中,还会遇到多数据源系统。原创 2024-09-02 00:15:00 · 3076 阅读 · 0 评论 -
基于 Redis 的分布式锁 Spring Boot 集成 Redisson 使用分布式锁确保对共享资源的互斥访问
工作中开发过一个上传文件的接口,每个区县都有自己的资源压缩包需要上传到系统,系统接收到压缩包后,需要解压,提取出里面的文件保存到文件服务器中,解析里面的SQLITE文件得到数据保存到数据库中。由于处理的过程会比较耗时,所以使用了异步处理的方式来优化用户体验,接口接收到文件后快速响应,返回上传成功,异步线程在后台继续执行解析压缩包业务逻辑。为了防止在异步线程处理期间,用户再次上传压缩包,从而导致上传资源数据不一致问题,在异步线程处理期间要获取锁来保证上传资源数据一致。原创 2024-08-07 00:24:21 · 1299 阅读 · 0 评论 -
基于 Redis 的分布式信号量 Spring Boot 集成 Redisson 使用 Semaphore 控制并发访问数量
工作中开发过一个服务,这里记作A服务,主要功能是配置,部署以及调用云函数。其中配置云函数的功能里,有一个配置项是并发数,意思是同一时间最多能有多少个请求调用已部署的云函数。客户端通过调用A服务,再由A服务去调用云函数,从而实现客户端请求云函数的功能。在调用云函数时,是要根据配置的并发数控制请求的数量。如果时单机架构的话,直接使用JDK中的 Semaphore 就能够实现并发线程控制了。但是项目的架构是微服务架构,所以需要使用分布式信号量才行。原创 2024-08-06 09:00:00 · 1458 阅读 · 0 评论 -
Spring Boot 动态数据源
大多数系统中,都需要数据库来持久化数据,在大多数情况下,一个系统只需要配置一个数据源便能够完成所有业务的查询,保存操作。也存在一个系统需要多个数据源的情况,不同的数据源对应不同的业务操作,这种场景下配置多个数据源,并且在代码中维护多套dao层就可以了。还存在一种业务场景,所有的业务操作都是一样的,只有操作的数据源的不同,如果用多套dao层来实现,由于业务操作都一样,会出现多块一模一样的代码,这样的冗余代码是我们不希望看到,不利于维护。这种业务场景就很适合用动态数据源来实现。原创 2024-08-01 22:38:36 · 1692 阅读 · 0 评论 -
Spring Boot 使用 Spring AI 构建知识库服务
做 AI 大模型技术调研时,参考的开源项目 Maxkb,它基于大模型做了一个的应用,用户可构建自己的知识库,创建自己的应用然后关联知识库,这样可以基于知识库里的内容让大模型的回答更加符合我们地预期。虽然 Maxkb 是使用 Python 写的,不过参考它用到的相关模型和数据库,可以用 Spring Boot 来构建一个自己的知识库服务。Spring Boot 也提供了 AI 相关的库,这使得接入 AI 大模型能力也十分方便。以下是使用Spring Boot 构建一个知识库的样例。原创 2024-08-01 01:01:31 · 6112 阅读 · 21 评论 -
SpringBoot 全局异常处理和接口入参校验
使用 spring boot 开发 web 项目时,基本上每一个接口都要做异常捕捉处理和入参校验,如果每个都硬编码在每个接口中,会导致程序中存在大量重复的代码。原创 2024-03-08 00:15:00 · 1273 阅读 · 0 评论 -
SpringBoot 上传下载文件接口代码示例
springboot做的CRUD项目中最常见的需求:上传文件和下载文件,代码基本上都差不多,记录一下,方便复用。原创 2024-03-02 21:01:09 · 1007 阅读 · 0 评论
分享