文章 130
评论 48
浏览 79507
Springboot启动后执行方法的四种方式

Springboot启动后执行方法的四种方式

最新需要在项目启动后立即执行某个方法,然后特此记录下找到的四种方式

SpringBoot定义Freemaker模板的全局变量

SpringBoot定义Freemaker模板的全局变量

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....

Spring boot @Async注解导致Controller层在实现接口后,请求报404

Spring boot @Async注解导致Controller层在实现接口后,请求报404

最近在使用fegin服务调用的时候,同事遇见一个非常困扰的问题,在controller层正常实现fegin接口后,发现无法正常调用服务。 觉得挺好奇的,特此记录一下问题原因和处理方式 原因:在controller层有个方法上面有@Async 注解导致的,(如果不实现接口类,直接使用@Async 请求不会报404) 处理方式:将需要异步的代码放在service层处理!!! 这篇文章给出了问题详细的解释:https://www.cnblogs.com/ming-blogs/p/12951861.html @Async 注解 使用注意事项 没有在@SpringBootApplication启动类当中添加注解@EnableAsync注解。 异步方法使用注解@Async的返回值只能为void或者Future。 没有走Spring的代理类。(即ServiceA里面方法A调用方法B,会不生效!!) 方法一定要从另一个类中调用,也就是从类的外部调用,类的内部调用是无效的,需要先获取其代理类,通过代理类调用异步方法

Oauth2 自定义异常信息返回(springboot无法全局捕获invalid_client,unauthorized,invalid_token)

Oauth2 自定义异常信息返回(springboot无法全局捕获invalid_client,unauthorized,invalid_token)

@[toc] 在SpringBoot当中使用Oauth2的时候,发现部分Oauth2的异常无法被springboot的ControllerAdvance全局异常捕获!!! 特此记录下相关的处理方式:

SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据

SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据

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) {....

Springboot2.x处理Long类型返回前端精度丢失以及LocalDateTime统一返回时间戳

Springboot2.x处理Long类型返回前端精度丢失以及LocalDateTime统一返回时间戳

最近在返回给前端数据的时候遇到了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.0整合OAuth2并使用JWT作为token

springboot2.0整合OAuth2并使用JWT作为token

之前实现了Springboot之Security前后端分离登录 刚好这段时间有空,乘机整合下OAuth2。记录下当中遇到的问题和处理方式。

SpringBoot使用@ControllerAdvice配合ResponseBodyAdvice记录接口请求参数以及返回数据

SpringBoot使用@ControllerAdvice配合ResponseBodyAdvice记录接口请求参数以及返回数据

最近在项目当中需要记录接口请求参数以及返回数据,本来是打算通过自定义切面来实现的,后来发现可以使用@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之Security前后端分离登录

Springboot之Security前后端分离登录

什么是Spring Security Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。 Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求 官方网站:https://spring.io/projects/spring-security#learn

Springboot读取自定义属性之集合(list,数组)

Springboot读取自定义属性之集合(list,数组)

springboot配置文件的读取操作很常见,之前也写过简单的读取配置文件的笔记SpringBoot学习之DAY_02 springboot配置文件信息读取 这篇笔记主要记录下最近在读取配置文件当中的心得和新知识点吧。

SpringBoot整合Druid+全局事务管理+Mybatis-Plus+代码生成器

SpringBoot整合Druid+全局事务管理+Mybatis-Plus+代码生成器

SpringBoot整合Druid+全局事务管理+Mybatis-Plus+代码生成器 在springboot开发当中,Druid,全局事务管理,代码生成器都是非常实用的,特此记录下整合的过程

springboot之aop切面execution表达式,@args,@annotation

springboot之aop切面execution表达式,@args,@annotation

最近在使用springboot进行切面编程的时候,发现定义切面点有很多种方式,每种方式有每种方式的特点。特此记录

Springboot之swagger-bootstrap-ui(knife4j)

Springboot之swagger-bootstrap-ui(knife4j)

最近在网上看到一个比较好的swagger-ui,swagger自带的UI不是很友好。特此记录下整合过程,并梳理下swagger相关的知识

SpringBoot2.2.x版本添加CORS跨域访问支持

SpringBoot2.2.x版本添加CORS跨域访问支持

看项目代码看到一个CORS跨域访问配置类,特此了解下什么是CORS跨域,以及Springboot 2.2.x版如何支持CORS跨域请求!!!

Springboot之Actuator服务监控

Springboot之Actuator服务监控

最近在项目当中,启动了多个微服务项目,想着如何监控启动的项目,然后就找到了Actuator这个东西!!!总结下自己学习到的知识点!!!

springboot之线程池ThreadPoolTaskExecutor以及@Async异步注解

springboot之线程池ThreadPoolTaskExecutor以及@Async异步注解

前言 最近项目当中有需求,要进行异步的处理,需要使用到线程池,很久没有使用到线程池了,一来是做JAVAweb开发基本上很少用到异步处理,二来是发现有的老项目里面,线程和线程池的使用比较混乱,有好几个线程池,有的线程池是通过spring管理的,有的是自己创建的,然后有的地方是直接创建的线程。所以这里记录下自己在项目当中如何优雅的使用线程池!避免项目当中到处都是线程池!!!

Springboot之分组验证以及自定义参数验证

Springboot之分组验证以及自定义参数验证

springboot之前端参数验证 学习完简单的验证之后发现基本能满足百分之80的验证需求,接下来深入学习下验证。

springboot之前端参数验证

springboot之前端参数验证

对于任何一个应用而言,在客户端做的数据有效性验证主要目的是规范用户的输入,而真实的数据验证工作都是在服务后端代码当中实现的,但在实际的项目当中,也经常会因为各种各样的原因:懒得写,觉得前端验证了,后端没有太多的必要等等没有进行数据验证,其实养成数据的有效性验证是一个非常好的习惯。 1 可以避免很多数据有效性导致的BUG,防范其余开发者的基础攻击 2 在前后端进行接口联调的时候,不需要因为参数的问题沟通很久。

通过springboot拦截器实现博客文章的自定义URL地址

通过springboot拦截器实现博客文章的自定义URL地址

最近写博客,看见博客系统可以自定义文章的路径。很好奇这个是如何实现的,就想着自己来实现一下。 实现思路 1 既然是自定义的 url 地址,那么肯定要保存到数据库。 2 拦截所有的请求,然后判断请求的地址是不是一个博文的自定义 url 地址。 3 如果是就重定向或者转发到博文统一展示页(重定向或者转发时将博文的 ID 传过去)。 4 博文统一展示页就通过博文的 id 就可以展示文章内容了。 拦截器学习 既然是通过拦截器实现,那么就需要知道该在何时拦截,如何在拦截器当中实现重定向跳转等等。 /** * @author 海加尔金鹰 www.hjljy.cn **/ public class MlogPathInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } @Override....

SpringBoot之文件批量上传和下载

SpringBoot之文件批量上传和下载

SpringBoot 文件的批量上传和批量下载 之前学习并使用过文件的单个上传:springboot学习日志之DAY08文件上传功能 最近写程序过程当中需要使用到批量上传和批量下载,批量和单个文件的上传下载还是有很多的区别的。特此记录

一个菜鸟程序员的踩坑日记