![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后端
文章平均质量分 61
后端框架使用记录
清泉影月
清泉影月,取自“明月松间照,清泉石上流”
展开
-
SpringBoot 集成 Quartz 框架
Quartz 框架是一个非常古老的框架,甚至可以说是其他定时框架(powerjod、xxl-job、scheduler)的始祖;其他框架要么是改造 quartz 而来、要么就是吸收 quartz 的核心思想而成。所以了解 quartz 的知识对使用其他框架很很大帮助,并且 quartz 的功能基本满足大部分场景。原创 2023-07-25 20:13:13 · 1625 阅读 · 0 评论 -
SpringBoot 之 AOP
AOP:简单点说就是,把某个核心方法切开看看能不能加点其他处理逻辑。原创 2022-12-06 15:07:52 · 830 阅读 · 0 评论 -
制作 java-sdk 的两种方式
平时maven工程里 pom 中的引用的依赖就是别人开发好的 sdk 包;工作中为了方便一些开发也需要自定义开发 sdk 包,下面介绍下怎么开发。原创 2022-11-02 12:11:24 · 7389 阅读 · 0 评论 -
@Value 注解的几种用法
总结 @Value 的几种常见用法。原创 2022-09-28 10:22:46 · 1646 阅读 · 0 评论 -
SpringBoot 中异步多线程的MDC日志跟踪
SpringBoot 如果不涉及异步多线程日志跟踪相对简单,可以参考logback + MDC 搭建 springboot 的日志系统,如果涉及异步多线程就需要重写线程池,线程池有很多方法,其实没必要都重写,只要把提交线程的方法重写即可。原创 2022-09-03 22:33:28 · 3289 阅读 · 0 评论 -
SpringBoot开启异步多线程
SpringBoot 的异步多线程需要从 java 的多线程基础说起,可以参考java 多线程实现的三种方式区别。SpringBoot 在此基础上进行了多次封装,所以使用起来非常方便。原创 2022-09-01 19:51:29 · 5878 阅读 · 1 评论 -
SpringBoot 集成 mongodb 实现数据增删改查
spring-boot-starter-data-mongodb 是springboot官方出的starter,集成和操作相对方便二、配置两种配置方式:第一种是 uri 的方式(上述注销的那种),集群配置时每个ip:port用逗号隔开;第二种如上述,看起来清晰一些;两种方式没有优劣之分,看个人喜好。下述截取部分业务代码说明,查看时请忽略业务代码;说明:上面插入的是json字符串,也可以直接插入结构体,但.........原创 2022-07-14 17:04:34 · 983 阅读 · 0 评论 -
springboot中websocket服务怎么调用其他类的方法
springboot配置websocket服务可调用其他类方法原创 2022-07-10 20:33:59 · 1837 阅读 · 0 评论 -
SpringBoot 集成websocket
websocket 使用门槛低、配置简单、稳定性相对较高,比较适合业务实时通讯。原创 2022-07-01 17:56:55 · 935 阅读 · 0 评论 -
mybatis 或 mybatis-plus 执行 sql 的三种方式
前言:mybatis 是目前非常流行的数据库框架,mybatis-plus 是 mybatis 的增强版(只做增强,不做改变),有兴趣的可以研究下。方式一:配置 xml 文件,该方式是比较通用的方法,适合任何 sql 语句(尤其是复杂 sql)。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati原创 2022-02-22 15:56:20 · 17537 阅读 · 0 评论 -
使用 PageHelper 做 mybatis 的分页查询
前言: 之前有写过 mybatis-plus 自带的分页【整合 mybatis-plus 和其分页查询功能到 springboot】,后来发现 PageHelper 更好用,对本身代码的侵入很小。原创 2022-02-22 14:15:46 · 705 阅读 · 0 评论 -
SpringBoot 搭建图片服务器 -- 支持上传下载和浏览
前言: 项目需求:做一个图片服务器,用于存放业务部门做的宣传图片;支持上传、下载和在线查看。一、需求分解1. 上传、下载功能比较成熟,相对好实现;2. 在线预览,需要分为单个文件预览和多个文件预览,这块需要二、接口设计请求路径 描述 POST/pic/upload 上传接口,返回文件预览地址 GET/pic/download?fileName=文件 下载接口 GET/pic/list ...原创 2021-12-08 14:55:05 · 3479 阅读 · 0 评论 -
The server selected protocol version TLS10 is not accepted by client preferences [TLS12] 报错处理
一、问题描述: 项目工程需求要连接 SqlServer 服务器,但是报错了,完整错误如下:com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”。翻译成中文:SqlServe...原创 2021-11-11 11:17:41 · 36745 阅读 · 25 评论 -
SpringBoot 引入第三方 jar 包
前言: springboot 工程的依赖都是通过 maven 管理,偶尔会有一些不在 maven 仓库的三方sdk 需要引入工程,这些 sdk 要怎么用呢。一、准备三方 sdk 该 sdk 是腾讯的 sdk,没有 maven 仓库,没法直接在 pom 中声明。在 resources 目录下创建一个 lib 目录,把所有 jar 包都拷到该目录。二、在 pom 中引入三方sdk 需要引入的 jar 有5个,pom 配置如下,其中标签gro...原创 2021-10-20 16:55:41 · 5051 阅读 · 0 评论 -
maven 排除引入依赖的子包
新建项目需要引入一个公司封装的 springcloud 工具包,这个工具包包含的 nacos 配置跟该项目存在冲突,需要排除,可参考下面样例。原创 2021-10-11 17:31:20 · 7656 阅读 · 2 评论 -
ClassFinal 对 java 代码进行混淆和加密
前言:最近公司突然对代码混淆关注起来了,不混淆不能发版,在网上找了下混淆工具,主流的 java 混淆是 proguard,但是不太好用,后来就发现一个好用的 classfinal 工具包,本质上 classfinal 不是做混淆的,是对生成的 jar 或者 war 重新加密生成一个新的包,但是你想啊,加密比混淆更高端,肯定是满足要求的。1.简介ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避原创 2020-09-08 19:53:02 · 4626 阅读 · 4 评论 -
RestTemplate 设置代理
需求:1. 用户登录以后可持续调用服务,中途不需要再次登录;2.用户登录后持续操作,中途不需要再次登录;3.用户持续操作一定的时间后必须再次登录。解决方案:原创 2021-08-12 19:04:14 · 3501 阅读 · 0 评论 -
SpringBoot 配置不返回为 null 的属性
前言:在设计接口返回的时候,有些字段因为没有用到所以会是 null,这些字段直接返回会给前端处理造成不必要的麻烦,而且有违程序猿审美,所以必须隐藏掉;同时还有另一种场景,某些字段在逻辑处理的时候是有用的,但是不能展示给前端,同样也需要隐藏掉。一、隐藏指定属性Spring注解@JsonIgnore,只要加在指定属性上即可完成 json 序列化时自动忽略。public class Data { private Integer id; private String i...原创 2021-07-30 17:51:22 · 6955 阅读 · 0 评论 -
SpringBoot 全局异常处理
前言:全局异常处理主要是为了应对 springboot 工程可能出现的异常情况,对已知或未知的异常进行统一处理,保证工程有一定的容错能力。使用起来比较简单,这里记录示意一下。1. 示例这里举一个常见的用户调用接口未登录的情况:用户调用接口会先经过拦截器,在 preHandle 方法中校验 token ,token 异常会抛出自定义异常UserLoginException;自定义异常在GlobalExceptionHandler 中被绑定该异常的userLoginExce...原创 2021-07-15 20:23:25 · 396 阅读 · 0 评论 -
SpringBoot 整合 JWT 实现登录和拦截
前言: 用户登录的功能就是需要服务提供者知道调用者是一个合法用户,非法用户不给予服务。SpringBoot + JWT(Json web token)是目前比较成熟的方案,整体逻辑如下:1. 服务提供者对所有调用(部分接口除外,例如登录接口)都进行拦截认证,只有认证通过才提供服务2. 用户通过登录获取认证信息3. 用户携带认证信息调用服务即可通过拦截认证获取服务一、版本和工具1. SpringBoot:2.3.2.RELEASE2. JDK:1.8_2513...原创 2021-07-15 14:34:07 · 2442 阅读 · 7 评论 -
SpringBoot 的 Get 方法传递数组参数
如题,这个功能点比较少见,但是也确实存在,这里记录一下,改一下传参的声明:变量变数组变量。@GetMapping("/test")public Object test(@RequestParam(value = "str") String[] arr)接口请求的时候有两种方式:方式一:test?str=12&str=13方式二:test?str=[12,13]推荐方式一访问,方式二在 SpringBoot 2.0 以上会报 400 ,需要改配置,可...原创 2021-07-12 16:21:30 · 10300 阅读 · 0 评论 -
如果优美地设计 springboot 接口返回
前言: 开发过程中接口数据的交互总是不可避免,数据返回的格式虽说没有统一规定,但是一些优美的接口返回总是会给予一些好的体验。1. 数据返回通用格式public class ResultBean<T> { private Integer code; private String message; private T data; }code :状态码,常见的 200,404 这些,常规的状态码可能会不够用,几乎稍微大点的项目都会...原创 2021-07-12 14:14:11 · 707 阅读 · 1 评论 -
springboot 中 HttpMessageNotWritableException 异常处理
前言:先把完成的报错(应该算是警告日志)贴出来:Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.test.dto.ResultBean]如果日志类似可以继续往下看。1. 问题原因和处理先还原事故现场(只展示核心问题代码)接口层代码:@RestController原创 2021-07-07 17:43:54 · 7886 阅读 · 0 评论 -
SpringBoot 工程配置文件加载顺序
前言:SpringBoot工程配置文件默认放在resources目录下,当 jar包启动以后会自动加载其配置;但是目前主流规范是配置文件和工程要分开,当然SpringBoot也是支持的,这里记录并验证一下其配置文件存放位置和生效顺序。一、可存放目录1.工程根目录下(存放jar包目录) config目录2.工程根目录下(存放jar包目录)3. 代码resources目录下config目录4. 代码resources目录下二、生效顺序验证根据上述顺序依次加...原创 2021-04-14 16:40:24 · 795 阅读 · 0 评论 -
上传文件报413问题说明和处理
前言:开发过程中难免碰到上传文件的需求,如果稍微不注意文件大小就会出现如题一样的状况,根本原因就是服务器限制了文件的大小,这里只说明使用nginx做服务器的问题处理。一、修改client_max_body_size大小client_max_body_size 50M;nginx 配置这个选项有三个地方可选,作用范围不一样:1. 在http{ }中设置,控制全局nginx请求报文大小2.在server{ }中设置,控制该server的所有请求报文大小3.在locatio...原创 2021-04-16 11:23:07 · 914 阅读 · 0 评论 -
SpringBoot 接口同时接收MultipartFile参数和结构体参数
前言:近期接手一个需求,需求转成代码实现就是需要在一个接口实现很多参数传递的同时加上文件上传,考虑到参数比较多,参数封装成body上传,文件用单独的MultipartFile 接收;前端死活对接不出来,在这里对前端同学表示歉意,是在下的错;这里解释一下原因和比较简单的处理方式。1.问题接口展示和故障说明@PostMapping("/create") public ApiResultBean postTest(HttpServletRequest request, ...原创 2021-03-26 11:13:07 · 28422 阅读 · 13 评论 -
Spring Boot怎么一次性加载数据到内存
前言:前段时间接手一个小项目需求,其中有一块逻辑是用户调用api接口;用户侧会传来两个字段,其中一个字段标识调用的接口信息(内部接口转发),另一个字段用于查询和更新用户套餐信息;这些信息都存在mysql表里面;调用api肯定会涉及高并发,所以想着怎么减少和数据库的交互;想来想去查询用户套餐信息和更新用户套餐信息貌似没法跳过,只能暂时把存储接口信息的表一次性加载到内存,这样判断就直接在内存进行,减少一次mysql查询;下面就来说说spring boot里面怎么整。1.@PostConstruct 注.原创 2021-02-02 10:15:19 · 728 阅读 · 0 评论 -
整合 jasypt 加密到 springboot 工程
前言:springboot 工程涉及到一些重要的连接,涉密连接明文传参隐患很大,所以需要配置加密, jasypt 是目前最好用的加密工具。1. 官网https://github.com/ulisesbocchio/jasypt-spring-boottips: 官网目前是 3.0.3,如果你是jdk 1.8 版本可能会有问题,这个后面再说。2. maven 依赖 <dependency> <groupId>com.github.uli原创 2020-10-21 12:13:15 · 580 阅读 · 2 评论 -
logback + MDC 搭建 springboot 的日志系统
前言:日志的作用是什么?调试,问题定位,数据分析。日志很重要,要保证统一的样式,分级别,请求可追溯。1. springboot 自带的logback如果你是 ieda 开发工具,并且是maven工程,可以点开 pom 文件,右键 -> maven -> Show Dependencies ,可以查看整个项目的依赖关系,其中有 logback2.配置 logback.xml 文件这个文件配置好放在 resources 目录下即可(不需要其他任何地方的配置),工程可自动识别,仔细阅读文原创 2020-09-14 20:21:22 · 2272 阅读 · 0 评论 -
mybatis 传入Integer类型0时导致参数丢失
场景:数据表里面有一个整型字段 type,参数为 0 或者 1,使用 mybatis 的 xml 文件写 sql 时发现传参为0时不起作用。1.部分代码 <if test="userType != null and userType != ''"> AND s.`type` = #{userType} </if>大家一般也都是上面的写法,但是 userType 被声明为 Integer传参为 0 时,userType原创 2020-08-26 17:18:19 · 1136 阅读 · 2 评论 -
IDEA 重复启动springboot 项目报端口被占用的错
前言:描述一下状况:IDEA 启动了 springboot 程序,想重启,但是关闭上次程序的时候选择了 disconnect,虽然运行窗口关了,但是程序却再也起不起来了。1.报错信息Description:Web server failed to start. Port xxxx was already in use.Action:Identify and stop the process that's listening on port 8888 or configure this app原创 2020-05-25 14:16:06 · 6514 阅读 · 1 评论 -
springboot 定时任务
前言:描述一下场景:微信公众号发送模板消息的时候需要 accesstoken,这个字段的值两个小时以后会过期,所以需要每一个小时去请求一次accesstoken存到 redis,用的时候直接去 redis 取就行了。这里只把定时代码写出来,其他的逻辑不在这里说。1.springboot 自带注解实现定时在类上使用 @EnableScheduling 注解,在定时的方法上使用 @Scheduled()import org.springframework.context.annotation.Conf原创 2020-05-19 20:12:24 · 258 阅读 · 0 评论 -
springboot从零开始:引入 dynamic 整合多 mysql 数据源
前言:多数据源在开发的过程中偶尔会用到,本博客也给出一个稍微简单的配置的方式。1.基础前面我写过 springboot 整合 mybatis-plus 的博客,有需要的先看一下,本次博客在此基础上进行阐述。整合 mybatis-plus 和其分页查询功能2.依赖<dependency> <groupId>com.baomidou</groupId&...原创 2020-04-23 21:13:28 · 1031 阅读 · 0 评论 -
整合 mybatis-plus 和分页查询功能到 springboot
前言:本系列博客记录 springboot 求学之路:写接口肯定是绕不开数据库连接,无论 mysql、redis、es都有涉及到,本次博客讨论 mysql 的记住连接配置,下个博客写一下多数据库的连接。1.声明依赖<!-- mysql 链接库 --><dependency> <groupId>mysql</groupId> ...原创 2020-04-21 20:12:00 · 1416 阅读 · 0 评论 -
curl 命令 get 请求丢失参数问题
在 linux 下想测试一下另一台 linux 机器的接口访问是否有效,过程如下接口描述:ip:port/get?name=jonny&age=18因为接口做了兼容处理,所以并没有报错,但是结果却不对查看接口的日志发现请求链接是下面这个/get?name=jonny这是直接把 & 后面的参数全丢了linux 下 & 有特殊含义,curl 请求会把 &...原创 2020-04-21 17:06:46 · 3378 阅读 · 0 评论 -
base64 编码传参避坑指南
前言:描述一下项目需求:前端传入 url 链接,查询库里面跟 url 相关的信息1.接口传参设计按照约定查询肯定用 get 请求,接口设计用 info 接受参数,设计如下/query?info=样例传参/query?info=http://www.shayebushi.com/key?name=jonny&job=nurse稍微懂点的应该就知道在这个链接有问题(/,=,...原创 2020-04-20 14:04:58 · 2169 阅读 · 0 评论 -
springboot从零开始:打 war 还是 jar 包的控制以及打包名的修改
前言:本系列博客记录 springboot 求学之路:现在一般都是打 jar 包,老的工程可能有 war 包需求;springboot 打包的名称默认是 artifactId 标签 + version 标签,不太方便。1.打 war 还是 jarspringboot 新版本(我的 2.2.6),是默认打 jar 包的,就是打包选项不写也是 jar一般老的项目或者有特殊需求的可能需要 w...原创 2020-04-16 19:28:50 · 536 阅读 · 0 评论 -
springboot从零开始:properties 文件替换成 yml 文件
前言:本系列博客记录 springboot 求学之路:一般你去看稍微新点的springboot工程,它的资源配置文件都是 yml,而不是自带的 properties;一方面是 yml 文件书写格式比较清晰简洁(和 python 书写格式很像),另一方面多种环境(测试、开发、生产等)配置也方便。1.properties 文件使用毕竟是自带的文件嘛,我们先用一下看看效果,然后再丢掉嘛(有点渣,...原创 2020-04-15 19:44:00 · 8089 阅读 · 0 评论 -
springboot从零开始:新建springboot工程
前言:本系列博客记录 springboot 求学之路:万事开头难,第一步创建一个基础工程1.环境和工具描述开发工具:IDEA,版本 2018.03JDK:版本1.8Spring Boot:版本 2.262.新建工程File -> New -> Project -> Spring Initializr点击 Next,简单配置一下工程信息点击 Next,初学者...原创 2020-04-14 21:29:06 · 856 阅读 · 0 评论 -
springboot从零开始:spring-boot-devtools 热部署工具怎么在IDEA下使用
前言:热部署貌似是一个比较有意思的东西,监控程序的变化,然后自动重新启动,不过使用的过程中偶尔有些小问题,最开始我的就是不起作用的,查了不少 博客,这里记录一下过程。1.当前使用版本,版本不同选项可能有些许差别IDEA:版本 2018.03Spring Boot:版本 2.252.maven依赖:<dependency> <groupId>org.spr...原创 2020-03-27 16:02:01 · 1069 阅读 · 0 评论