最近在用Springboot2.7整合knife4j-openapi2-spring-boot-starter后,发现无法启动项目直接报错 报错信息 org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 网上解决办法 当时直接搜索引擎一动,解决办法基本上都是添加一个配置。原因是:Spring Boot 2.6以上引入的新PathPatternParser,需要进行配置,不然整合起来会报错 spring.mvc.pathmatch.matching-strategy=ant-path-matcher 具体问题原因和解决方案 当时以为加上就可以了,结果发现并没有解决问题,问题还是存在,最后网上再次搜索验证,得到的问题原因是和项目引入的其他依赖冲突,当项目当中引入了spring-boot-starter-actuat.... Springboot2.7整合knife4j-openapi2-spring-boot报错Failed to start bean ‘documentationPluginsBootstrapper springboot
import freemarker.template.Configuration; import freemarker.template.TemplateModelException; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; /** * freemarker配置 * * @author hjljy * @date 2021/10/15 */ @Component public class FreemarkerConfiguration { private final Configuration configuration; public FreemarkerConfiguration(Configuration configuration) { this.configuration = configuration; } /** * 加载配置变量数据 * * @throws TemplateModelException 模板模型异常 */ @PostCo.... SpringBoot定义Freemaker模板的全局变量 springboot
SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据 最近项目当中大量使用到枚举,特此记录下项目当中使用枚举的好处,场景,使用方式。 枚举的好处 可读性高, 易理解 统一参数类型,避免传参错误 线程安全,全局唯一,无法修改 枚举使用场景 在实际的使用当中,当某个对象或者某个属性,需要有多个可供选择的状态或者描述,例如人的性别,支付的状态,错误的类型等等,都可以使用枚举。 枚举在项目中的使用 通常在项目当中会存在两种形式的枚举 第一种形式 /** * 性别枚举 * * @author hjljy */ @Getter public enum SexEnum { /** * 性别枚举 */ DEFAULT(-1, "保密"), WOMAN(0, "女"), MAN(1, "男"); @EnumValue //标记存储到数据库的值 @JsonValue //标记json返回的值 private final Integer code; private final String remark; SexEnum(Integer code, String remark) {.... SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据 springboot
最近在返回给前端数据的时候遇到了1 Long类型返回前端精度丢失 2LocalDateTime统一返回时间戳方便前端统一处理的问题,记录下解决方案。 代码如下 环境:springboot2.x ,JDK8 import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import.... Springboot2.x处理Long类型返回前端精度丢失以及LocalDateTime统一返回时间戳 springboot
之前实现了Springboot之Security前后端分离登录 刚好这段时间有空,乘机整合下OAuth2。记录下当中遇到的问题和处理方式。 springboot2.0整合OAuth2并使用JWT作为token springboot
最近在项目当中需要记录接口请求参数以及返回数据,本来是打算通过自定义切面来实现的,后来发现可以使用@ControllerAdvice配合ResponseBodyAdvice来进行记录数据,特此记录,完整代码如下: /** * @author yichaofan * @since 2020/11/20 12:47 * @apiNote 统一打印请求参数和返回参数日志 */ @ControllerAdvice @Slf4j public class ResponseBodyAnalysis implements ResponseBodyAdvice { /** * 参数返回给前端之前进行,可以进行相关的处理例如,记录请求参数,响应参数,封装统一响应参数等操作 * * 源代码注释如下: * Invoked after an {@code HttpMessageConverter} is selected and just before * its write method is invoked. * @param body the body to be written * @param re.... SpringBoot使用@ControllerAdvice配合ResponseBodyAdvice记录接口请求参数以及返回数据 springboot
什么是Spring Security Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。 Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求 官方网站:https://spring.io/projects/spring-security#learn Springboot之Security前后端分离登录 springboot
springboot配置文件的读取操作很常见,之前也写过简单的读取配置文件的笔记SpringBoot学习之DAY_02 springboot配置文件信息读取 这篇笔记主要记录下最近在读取配置文件当中的心得和新知识点吧。 Springboot读取自定义属性之集合(list,数组) springboot
最近在项目当中,启动了多个微服务项目,想着如何监控启动的项目,然后就找到了Actuator这个东西!!!总结下自己学习到的知识点!!! Springboot之Actuator服务监控 springboot
前言 最近项目当中有需求,要进行异步的处理,需要使用到线程池,很久没有使用到线程池了,一来是做JAVAweb开发基本上很少用到异步处理,二来是发现有的老项目里面,线程和线程池的使用比较混乱,有好几个线程池,有的线程池是通过spring管理的,有的是自己创建的,然后有的地方是直接创建的线程。所以这里记录下自己在项目当中如何优雅的使用线程池!避免项目当中到处都是线程池!!! springboot之线程池ThreadPoolTaskExecutor以及@Async异步注解 springboot
前言 账号注册的时候通常会选择短信注册或者邮箱注册,那么如何在JAVA当中实现短信的发送和邮件的发送呢? SMS服务实现 发送短信通常都是接入第三方的SMS服务,例如:阿里云SMS,百度云SMS,七牛云SMS等等。但是上面的都要钱,虽然不多。 不过腾讯云注册会送100条免费短信。所以作为一名个人开发者直接使用腾讯云的进行测试就可以了。实际开发的话,根据情况在进行选择就可以。 阿里云SMS接入指南:如何接入阿里云短信服务 (完整指南) 百度云SMS官方接入指南:简单消息服务快速入门 腾讯云SMS官方接入指南:官方文档API 这种接入第三方SDK开发的,还是要好好的去看看官方文档,根据官方文档进行操作一般不会出问题! 发送邮件实现 重要事项:一定要开启邮箱的SMTP服务!!!获得对应的授权码 重要事项:一定要开启邮箱的SMTP服务!!!获得对应的授权码 重要事项:一定要开启邮箱的SMTP服务!!!获得对应的授权码 以QQ邮箱为例:在邮箱设置--账户--POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 里面开启SMTP服务获取授权码。 普通Java项目发送邮件.... SpringBoot学习日志之发送邮件和SMS短信 springboot
什么是Webscoket 简单来说就是一个基于TCP的持久化的网络通信协议。主要作用就是:服务端可以主动推送信息给客户端,不需要客户端重复的向服务端发请求查询。 具体详细说明:https://www.zhihu.com/question/20215561 (PS:写的是真的简单易懂) springboot整合Webscoket 实现websocket有多种方式:最简单的H5, sockjs以及使用STOMP协议 开发环境 JDK版本1.8 springboot版本2.1.0 开发工具:IDEA MVAEN 基于H5的websocket实现 第一步 引入依赖 在springboot2.0版本之后,官方添加了Webscoket的依赖,因此只需要在pom当中引入 <!-- 引入websocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId&.... springboot整合websocket技术 springboot
什么是Quartz? 一个定时任务调度框架,简单易用,功能强大可以使实现定时任务的。 在项目开发过程当中,某些定时任务,可能在运行一段时间之后,就不需要了,或者需要修改下定时任务的执行时间等等。 需要在代码当中进行修改然后重新打包发布,很麻烦。使用Quartz来实现的话不需要重新修改代码而达到要求。 springboot整合Quartz定时调度框架 开发环境 JDK版本1.8 springboot版本:2.1.0 开发工具:IDEA 实现一个简单的定时任务 第一步 引入对应的jar 在springboot2.0后官方添加了Quartz框架的依赖,所以只需要在pom文件当中引入 <!--引入quartz定时框架--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> 第二步 创建一个定时任务 由于spr.... springboot整合quartz实现定时任务的动态修改,启动,暂停等操作 springboot