- 博客(250)
- 资源 (27)
- 收藏
- 关注
原创 Spring Validation Service层验证
本文介绍了在Service层实现参数验证的两种主要方式:注解验证和编程式验证。通过@Validated注解可开启方法级验证,支持分组验证(如创建/更新操作使用不同规则)。编程式验证则通过手动调用Validator实现更灵活的控制,适合批量处理场景。文中展示了订单服务和商品服务的具体实现,包括DTO验证规则定义、分组验证应用以及批量导入时的错误收集处理。两种方式结合使用可构建健壮的参数验证体系,确保业务逻辑执行前数据的合法性。
2025-12-10 17:04:18
910
原创 Optional 使用指南
Java 8 引入的 Optional 是一个容器类,用于优雅处理可能为 null 的值。它通过包装可能为空的值,避免了传统方式中繁琐的 null 检查和嵌套判断。Optional 提供链式方法如 map()、flatMap()、filter(),以及安全的取值方式 orElse()/orElseGet()。创建 Optional 推荐使用 ofNullable(),业务方法应返回 Optional.empty() 而非 null。相比直接使用 null,Optional 使代码更清晰安全,是处理空值的现代
2025-12-03 16:53:26
779
2
原创 Spring Boot初始化钩子全解析
Spring Boot初始化钩子机制提供了多样化的应用启动阶段拦截点,涵盖从容器创建到应用就绪的全过程。核心钩子包括:SpringApplicationRunListener(启动阶段拦截)、BeanPostProcessor(Bean初始化拦截)、CommandLineRunner/ApplicationRunner(启动后执行)、@PostConstruct/InitializingBean(Bean生命周期)、ApplicationListener(事件监听)以及JVM关闭钩子。这些钩子按精确时序执行
2025-10-17 15:08:28
1219
原创 Spring Data Jpa 使用EntityManager执行SQL操作数据
此外,建议在Spring Boot应用程序中使用Spring Data JPA,因为它提供了更高级、更安全的查询方式,并且更符合Spring的习惯。在这个例子中,我们使用了createNativeQuery方法来创建原生SQL查询,并通过setParameter方法设置参数。请注意,这里使用的是原生SQL,因此表名和字段名需要与数据库中的实际情况一致。在实际开发中,为了防止SQL注入等安全问题,最好使用参数化查询,就像上面的例子一样使用setParameter方法。
2024-01-05 14:28:28
2933
原创 Spring Data Jpa中的@PersistenceContext是什么?
选择使用哪个取决于项目的具体需求。如果你主要使用JPA进行数据库访问,而且愿意保持对JPA的强依赖,那么使用。如果你更倾向于使用Spring的依赖注入机制,并且希望注入其他Spring托管的组件,那么使用。都是用于依赖注入的注解,但它们的使用场景和依赖关系略有不同。在实际项目中,两者都有广泛的应用。
2024-01-05 14:17:34
2571
原创 一篇文章搞定Spring Cache
使用@Cacheable@CachePut注解时,可以通过condition属性设置缓存失效的条件。例如,只有满足某个条件时才进行缓存:// 方法体逻辑使用unless属性设置条件,如果满足条件,则不会缓存结果。与condition相反,unless表达式的值为true时,不缓存:// 方法体逻辑如果你想使用除默认的之外的缓存管理器,可以自定义@Bean// 自定义的缓存管理器通过自定义缓存注解,你可以在方法上使用自定义的缓存注解,提供更复杂的缓存逻辑。例如:// 方法体逻辑其中。
2023-11-29 14:55:12
433
原创 Git常用规范
需要注意的是,使用message模板可以帮助我们规范化提交信息的格式和内容,但并不是所有的提交都需要按照模板来写。在实际开发中,我们应该根据实际情况灵活选择合适的提交信息,并确保提交信息的内容准确、清晰、简洁。总之,代码提交message规范的目的是为了让代码提交记录更加清晰明了,方便团队成员查看和理解提交的内容和目的,从而提高团队协作的效率和质量。其中,、、 和 # 是必填项, 可以省略, 不宜过长,最好不超过50个字符, 和 # 建议使用关键字和Issue编号的形式进行填写。
2023-11-15 09:53:21
3961
原创 Spring Boot 拦截器 HandlerInterceptor的使用以及WebMvcConfigurer简单介绍
当我们使用Spring Boot构建Web应用程序时,是一个重要的组件,用于拦截请求的处理过程。接口定义了在请求处理的不同阶段执行的方法,允许我们在请求到达处理程序之前和之后执行自定义逻辑。
2023-11-14 16:58:52
6910
2
原创 spring boot validation使用
是 Spring Boot 中用于支持数据验证的模块。它建立在 Java Validation API(JSR-380)之上,提供了一种方便的方式来验证应用程序中的数据。以下是使用。
2023-11-13 17:01:08
4508
原创 使用 ThreadPoolExecutor 管理线程池
ThreadPoolExecutor 是 Java 多线程编程中非常重要的工具,能够高效地管理线程的生命周期,提高程序性能和资源利用率。合理配置线程池参数,选择适当的拒绝策略,是保证系统稳定性和性能的关键。
2023-10-10 15:46:16
307
原创 解决表情包乱码
但表情符号包含许多非ASCII字符,不能直接在文本中传输,所以通常会转换为HTML实体编码进行传输和存储,如常见的微笑表情“:😊:”会编码为“😊”。但是后续读取网络返回的文本内容时,如果不对这些HTML实体进行解码,就会直接输出类似“😊”的字符串,导致表情显示为乱码的问题。但我们在拿到文本内容后,需要进行解码才能显示原始的表情符号。要解决这个问题,我们需要在获得文本内容后,对其中的HTML实体编码进行解码,转换回对应的Unicode字符,才能正确显示表情。
2023-09-07 11:30:07
1436
1
原创 git中的cherry-pick和merge有些区别以及cherry-pick怎么用
可以看到,我们只将feature分支上的F这个commit应用到了dev分支,而不是合并整个feature分支。这就是cherry-pick的一个简单用法,它可以灵活地挑选修改并应用到当前分支。
2023-09-04 10:05:46
6403
原创 org.springframework.util.StopWatch使用说明
StopWatch是一个简单实用的秒表工具类,可以用来评估代码块的执行时间和性能。然后可以通过getTaskTimeMillis(String taskName)获取指定任务的执行时间。这需要先调用setKeepTaskList(true)保留任务清单。
2023-05-10 18:03:03
1743
原创 JAVA导出CSV文件
Excel 在读取 csv 的时候是通过读取文件头上的 bom 来识别编码的,这导致如果我们生成 csv 文件的平台输出无 bom 头编码的 csv 文件(例如 utf-8 ,在标准中默认是可以没有 bom 头的),Excel 只能自动按照默认编码读取,不一致就会出现乱码问题了。写入的时候加上: out.write(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF });使用CSVWriter。
2022-11-16 10:11:24
8003
1
原创 Springboot踩坑日记——spring data jap 使用@Query接收Map<String,Integer>结果集时取值时报错
【代码】Springboot踩坑日记——spring data jap 使用@Query接收Map结果集时取值时报错。
2022-11-03 16:53:08
880
原创 docker安装Nginx
安装Nginx二、初始化宿主机Nginx文件1、 运行nginx镜像2、本地创建文件目录3、拷贝nginx容器对应的文件默认配置3、停止并删除nginx容器三、启动nginx镜像四、验证Nginx访问链接: http://127.0.0.1 COLLATE utf8_bin NOT NULL DEFAULT '', `User` c.
2021-07-03 21:41:00
577
2
原创 Postman动态获取值(动态设置全局变量)
设置全局变量Environment: 环境是一组变量,它允许您切换请求的上下文。优先使用,可以切换环境Globals: 全局变量是工作空间中始终可用的一组变量。不受切换环境影响\d数字:[0-9]\D非数字: [^0-9]\s空白字符:[ \t\n\x0B\f\r]\S非空白字符:[^\s]\w匹配字母或数字或下划线\W非单词字符:[^\w]\b : 不会消耗任何字符只匹配一个位置,常用于匹配单词边界 ;
2020-12-02 14:25:23
441
原创 nginx安装SSL证书(配置https)
nginx安装SSL证书默认已经安装好了nginx准备SSL证书阿里云,腾讯云有免费的SSL证书当然你也能用收费的配置创建目录mkdir ssl #证书目录mkdir vhost #配置目录修改nginx.conf配置 http{ #在http模块里添加: include vhost/*.conf;#匹配vhost目录下的所有.conf文件}在vhost目录添加配置配置名一般为 域名.confserver { listen 443 ssl;
2020-11-24 15:39:56
1639
转载 server.c:5166:39: error: ‘struct redisServer’ has no member named ‘maxmemory’
1、错误示例server.c:5151:94: error: ‘struct redisServer’ has no member named ‘unixsocket’serverLog(LL_NOTICE,“The server is now ready to accept connections at %s”, server.unixsocket);^server.c:5152:19: error: ‘struct redisServer’ has no member named ‘super
2020-09-14 10:22:40
3991
转载 springboot jackson配置
springboot 针对jackson是自动化配置的,如果需要修改,有两种方式:通过application.yml配置属性说明:##spring.jackson.date-format指定日期格式,比如yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名spring.jackson.deserialization是否开启Jackson的反序列化spring.jackson.generator是否开启json的generators.spring.jackson.joda-date
2020-09-03 09:31:17
453
原创 java使用AOP打印日志
一、创建一个自定义注解:package com.yan.demo.core.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@T
2020-08-15 16:00:45
1618
转载 java获取请求IP
public static String getIpAddress(HttpServletRequest request) { String ipAddress = null; try { ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIg.
2020-07-22 13:30:54
1351
1
原创 Nginx多配置文件
应用场景:主配置文件nginx.conf中指定包含其他扩展配置文件,从而简化nginx主配置文件,实现多个站点功能,方便配置文件的维护在nginx.conf中的http模块里添加include指令:include vhost/*.conf;#匹配vhost目录下的所有.conf文件在 vhost 文件夹中创建 test.com.conf 文件:server { listen 8000; server_name test1.com; location
2020-07-09 14:11:30
1319
转载 GitHub更新fork的代码
1、在本地装好github客户端,或者git客户端2、clone 自己的fork分支到本地,可以直接使用github客户端,clone到本地,如果使用命令行,命令为: git clone https://github.com/liuyanqing1023/WxJava.git3、增加源分支地址到你项目远程分支列表中(此处是关键),先得将原来的仓库指定为upstream,命令为: git remote add upstream https://github.com/Wechat-Group/
2020-07-01 19:13:22
550
原创 Linux,centos环境java启动关闭重启shell脚本
#!/usr/bin/env bashINPUT=$2FILE_PATH=`readlink -f ${INPUT}`SERVICE=${INPUT##*/}SERVICE_NAME=${SERVICE%.*}DEPLOY_DIR=`pwd`JVM_OPTS="-server -Xms64m -Xmx128m"if [[ "$1" = "" ]];then echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|res
2020-06-23 14:34:36
918
原创 git常用命令
名词master: 默认开发分支origin: 默认远程版本库Index / Stage:暂存区Workspace:工作区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库 git init # 新建一个目录,将其初始化为Git代码库 git init [project-name] # 下载一个项目和它的整个代码历史 git clone [url] git clone [url] [
2020-06-17 16:55:29
436
原创 亲手实现一个springboot默认配置&起步加载
Spring Boot 是一个用于快速开发 Spring 应用程序的框架,提供了很多默认配置和起步加载功能,这使得 Spring Boot 应用程序能够更快速地启动和运行。起步加载是指,Spring Boot 会根据应用程序的依赖关系自动加载所需的类库和配置,从而简化了应用程序的部署和管理。开发者只需要在项目中添加相应的依赖项,Spring Boot 就会自动处理它们之间的依赖关系,并加载所需的类库和配置。起步加载还可以帮助开发者快速地搭建基于 Spring Boot 的应用程序。
2020-06-10 17:21:21
1116
原创 Docker(1)——CentOS7.x环境下安装Docker以及常用命令
在centos中安装dockerDocker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。我这里将Docker安装到阿里云CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。yum 包更新到最新sudo yum update[外链图片转存
2020-05-10 20:30:29
379
原创 CentOS7 64位安装mysql教程
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!这里依旧以mysql为例进行展示1、先检查系统是否装有mysqlrpm -qa | grep mysql这里返回空值,说明没有安装这里执行安装命令是无效的,因为centos-7默认是Mariadb,所以执行以下命令只是更新Mariadb数据库yum install mysql删除可用yum...
2020-04-13 13:47:36
2259
原创 springboot实现AOP切面编程
概述AOP(Aspect Oriented Programming) 即面向切面编程。面向切面是面向对象中的一种方式而已。在代码执行过程中,动态嵌入其他代码,叫做面向切面编程(将交叉业务逻辑封装成成切面,利用AOP功能将切面织入到主业务逻辑———与主业务逻辑无关的代码,使用场景如:安全检查,事物,日志等 。AOP是一种方式,实现AOP的库有名的有两个AspectJ和spring AOP.核心...
2020-04-02 15:51:29
5972
1
Docker使用文档
2018-12-25
Spring-boot参考指南
2017-08-01
ActiveMQ_in_Action_中文.pdf
2017-09-11
FastDFS 架构剖析及配置优化
2017-09-18
fastDFS笔记
2017-09-18
深入浅出的学习MVC
2018-12-11
RabbitMQ使用文档.PDF
2018-12-20
dubbo监控中心(dubbo-admin)使用与安装
2017-09-17
JVM优化|java虚拟机优化
2018-12-04
spring-boot-cli-1.4.0.BUILD-SNAPSHOT-bin.zip
2017-09-14
rabbitMQ教程
2019-01-23
快乐的Linux命令行.pdf
2017-05-12
Spring技术内幕:深入解析SPRING架构与设计原理
2017-09-11
[免费]Spring MVC学习指南(高清)
2017-09-11
pom约束文件
2017-09-17
深入理解Java虚拟机:JVM高级特性与最佳实践
2017-08-01
Jenkins持续集成与容器管理.pdf
2019-06-24
pagehelper分页插件
2017-09-17
dubbo-admin-2.5.4.war
2017-09-17
maven3.3.9
2017-09-17
HttpClient 4.3教程.pdf
2017-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅