- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot中如何手动开启数据库事务
为何mybatis的sqlSession在执行同一个查询sql语句时后续会从缓存中拿值。前面说到sql语句的执行会交给executor,其查询方法如下。// 如果设置了强制刷新缓存,每次执行查询时都会清空一遍缓存try {// 如果从缓存中拿到了值就不从数据库中查询了if (list!= null) {} else {mybatis在扫描mapper接口时会默认让查询语句的刷新缓存为都为false,这里其实就是mybatis的一级缓存,属于会话级别。
2025-12-26 17:00:14
998
原创 SpringBoot3.x下如何使用es进行数据查询
SpringBoot3中的elasticsearch版本已经来到8.x版本,相比较于SpringBoot2中的7.x版本相关写法已经发生改变。在SpringBoot2中会使用ElasticsearchRestTemplate和es进行交互,但这个类在SpringBoot3中已经被移除,需要使用ElasticsearchTemplate或者ElasticsearchClient和es进行交互。下面介绍这两个类的基本使用方式。以上的es查询语句等价于。
2025-11-24 16:12:56
366
原创 单元测试(二)mockito如何测试匿名内部类
假设要测试如下的一段业务代码代码解释:保存用户的一段逻辑代码,当用户保存之后调用消息服务发送消息,消息服务的send方法无返回值,依靠回调告知调用方消息发送状态。有两个参数第一个是消息内容,第二个回调函数,这里用函数接口Consumer表示。
2025-08-21 16:57:02
326
原创 BouncyCastle类库获取公钥和私钥并支持jdk8+
是一个开源的加密库,一般会引入它的bcprov依赖。现在的java项目基本都已经使用java17和Java21了,这里介绍在jdk8+的项目下如何使用它的类库进行公钥和私钥的获取。注意使用之前需要把BouncyCastle加入到java的安全库中,执行如下代码。
2025-07-02 16:42:35
672
原创 SpringBoot使用@Valid或者@Validated时如何自定义校验
场景:假设我们有一个注册接口,有两个字段分别是注册类型(手机注册、邮箱注册)、联系方式,当用户以手机号注册时我们需要校验手机号是否合法,当用户以邮箱注册时我们需要校验邮箱是否合法。自定义注解@Target({Class <?Class <?Constraint;Class <?Payload;Class <?
2025-01-23 17:21:29
364
原创 如何简单理解加密、摘要、数字签名、数字证书
加密是一种通过特定算法将明文(原始信息)转换为密文(加密后的信息)的过程,这种转换的目的是确保信息在传输或存储过程中的安全性。对称加密:使用相同的密钥用于加密和解密,如AES和DES非对称加密:使用一对密钥,公钥和私钥,公钥用于加密信息,而私钥用于解密信息。如RSA。我们根据具体场景来看下加密过程场景一:当我们在互联网通信时,比如小明和小红发送了一条消息:“今天一起看电影”。但是这个消息可能会被小王截获,截获之后小王就开始随心所欲想发什么就发什么。
2024-12-17 09:58:13
865
原创 springboot项目如何使用tomcat来完成Basic Auth认证
假如项目需要把一些接口加上安全认证访问限制,比如这里使用比较简单的Basic Auth认证,那么应该如何使用tomcat的自带的认证机制来完成访问限制呢。
2024-01-05 18:05:55
1532
原创 如何使用tomcat的jndi来注入自己的资源
问题场景:springboot项目启动报如下错误javax.naming.NamingException: Unexpected exception resolving reference at org.apache.naming.NamingContext.lookup(NamingContext.java:884) ~[tomcat-embed-core-9.0.80.jar:9.0.80] at org.apache.naming.NamingContext.lookup(NamingCont
2023-12-25 17:52:35
620
原创 java中异步日志如何记录主线程的日志上下文信息
如果在项目于里面自定义了日志格式,比如记录链路追踪的traceId字段,当一次请求过来的时候可以通过traceId字段过滤出本次请求的完整日志。
2023-09-26 16:17:48
594
原创 单元测试(一)mockito如何测试带有文件操作相关的代码
假如你有这样的一个要测试的方法,因为我们不需要文件操作的真实行为,所以必须使用mock的方式。
2023-07-30 12:31:54
2799
3
原创 被@Transactional注解的方法如何使用异步调用
当线程池的任务执行的时候可能事务还没提交,这样就查不到一些入库的数据。可以把上面代码做如下改动即可解决问题。
2023-03-27 16:01:44
2342
1
原创 关于使用JSch连接sftp服务器的时候报UnknownHostKey异常
问题场景:因项目上需要下载第三方的sftp文件,这里用的是JSch连接的sftp服务器,JSch只需要在pom文件引入即可 <!-- sftp --> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1
2022-05-10 15:20:53
3675
1
原创 针对SpringBoot Actuator未授权访问端点问题
问题场景:目前SpringBoot Actuator暴露出的端点是未经授权就可以直接访问的,这样可能会存在一些安全隐患解决方法1.第一种方案:可以在配置文件中把暴露出的端点排除掉#开启所有的端点访问(目前 health和info是默认开启的)management.endpoints.web.exposure.include=*#屏蔽掉health端点management.endpoints.web.exposure.exclude=health这种方案屏蔽掉之后,就不能在访问了,对于项目
2022-03-24 14:36:20
3815
2
原创 ribbon的重试次数
项目场景:服务之间的调用可能会出现一些无法访问或者超时等错误,有时候需要重试机制来解决问题application.properties配置:#ribbon 单独配置 springboot 2.4.x的版本无法使用#ribbon本地配置服务列表,没有使用eureka OrchestrationClient为服务名OrchestrationFeignClient.ribbon.listOfServers=http://127.0.0.1:22114,http://127.0.0.1:2211
2022-01-18 11:10:28
832
2
原创 webflux项目如何用fastjson来解析请求参数
项目场景:项目采用的是webFlux框架,对于传入json格式的请求数据用fastjson来解析问题描述:假设实体是下面的结构:@Datapublic class Student { //姓名 @JSONField(name = "Name") private String name; //性别 @JSONField(name = "Gender") private String sex; //年龄 @JSONField(na
2022-01-07 16:21:28
1537
1
原创 java生成指定长度的随机字符串
生成一个指定长度的随机字符串package com;import java.util.concurrent.ThreadLocalRandom;/** * 获得指定长度的随机字符串 * @author zhoule */public class RandomString { private static final String CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
2021-09-15 14:52:43
2568
1
原创 swagger2如何让页面的展示字段按照@JSONField配置的属性来展示
前言项目中使用了FastJson,并定义了实体字段展示的名称,比如就像下面这样@Datapublic class User { @JSONField(name = "UserId") @ApiModelProperty("用户ID") private Integer id; @JSONField(name = "Name") @ApiModelProperty("姓名") private String name; @JSONField(nam
2021-08-10 12:02:14
1040
5
原创 feign是如何创建代理对象的
Feign如何创建代理对象的前言@EnableFeignClients注解前言首先我们使用feign调用其他服务的接口的时候,只需要定义一个接口,比如就像下面这样:业务代码调用的时候也只需要通过接口直接调用就可以,但是底层到底是如何实现调用的呢@EnableFeignClients注解首先@EnableFeignClients注解是是开启feign调用功能的关键,这个注解我们一般会加在启动类上面,让我们看看这个注解里面都是什么@Retention(RetentionPolicy.RUNTIME
2021-08-09 15:42:53
840
2
原创 java.lang.IllegalStateException: getReader() has already been called for this request
项目上因为有需要需要在拦截器里面获取请求体里面的数据进行数据验证,因为自己定义的controller里面对使用了@RequestBody注解,导致项目报错了报错的内容是:java.lang.IllegalStateException: getReader() has already been called for this request查阅资料发现request里面的的getReader 和getInputStream因为是以流的方式获取的,读取一次后,后续就不能再用了,解决思路是:第一步:定义一个过
2021-07-22 15:55:31
3968
4
原创 chrome浏览器安装右键翻译插件
平常打开网页查看相关文章的时候,遇到一些不会的因为单词,可能第一反应是复制英文单词到百度翻译里面,下面为介绍一种直接右键选中英文单词,实现在线翻译的插件。这边用到的是“划词翻译”插件,安装步骤如下:第一步:下载扩展程序插件链接: https://pan.baidu.com/s/17zF7AksigMwLh8McRBVG0w 提取码: hmat第二步:选择其中任意一个版本,我这边用到的是v8.4.0,然后在谷歌浏览器上打开更多工具->扩展程序,将下载后的文件拖放到扩展程序页面,就会实现自动安装,
2021-07-12 11:02:59
5644
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅