【springboot】功能合集

目录

  • 全局监听请求:HandlerInterceptor
    • 创建拦截器类
    • 添加拦截器
    • 拦截器类调用Service服务
  • 全局异常处理:@ExceptionHandler
    • 统一处理业务异常
    • 自定义JsonResult
  • 全局跨域配置:WebMvcConfigurer
  • 静态(static)方法中调用接口(Service层)
  • 定时任务

全局监听请求:HandlerInterceptor

创建拦截器类

public class RequestInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return HandlerInterceptor.super.preHandle(request, response, handler);}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {...TrackUtil.report(info); // 通过工具类调用服务}
}

添加拦截器

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry interceptorRegistry) {interceptorRegistry.addInterceptor(...); // 其他拦截器interceptorRegistry.addInterceptor(new RequestInterceptor()); // 添加本拦截器}
}

拦截器类调用Service服务

借助工具类

@Component
public class TrackUtil {public static TrackUtil trackUtil; //声明对象@Autowired //注入TrackService trackService;@PostConstruct //初始化public void init() {trackUtil = this;trackUtil.trackService = this.trackService;}public static void report(Object info){trackUtil.trackService.report(info);}
}

全局异常处理:@ExceptionHandler

统一处理业务异常

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler({ServletException.class})@ResponseBody@ResponseStatus(value = HttpStatus.BAD_REQUEST)public JsonResult errorHandler1(HttpServletRequest request,HttpServletResponse response,Exception e) {e.printStackTrace();response.setCharacterEncoding("UTF-8");//防止返回中文乱码return JsonResult.build(400, e.getMessage());}@ExceptionHandler({Exception.class})@ResponseBody@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)public JsonResult errorHandler(HttpServletRequest request,HttpServletResponse response,Exception e) {e.printStackTrace();response.setCharacterEncoding("UTF-8");//防止返回中文乱码return JsonResult.build(500, e.getMessage());}
}

自定义JsonResult

@Data
public class JsonResult {private Integer code; //响应状态码private String msg; //响应消息private Object data; //响应数据public JsonResult(Integer code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public JsonResult(Integer code, String msg) {this.code = code;this.msg = msg;}public static JsonResult build(Integer status, String msg, Object data) {JsonResult jsonResult = new JsonResult(status, msg, data);return jsonResult;}public static JsonResult build(Integer status, String msg) {JsonResult jsonResult = new JsonResult(status, msg);return jsonResult;}public static JsonResult ok( Object data) {JsonResult jsonResult = new JsonResult(200, "success", data);return jsonResult;}@Overridepublic String toString() {JSONObject jsonObject=new JSONObject();jsonObject.put("code",code);jsonObject.put("msg",msg);jsonObject.put("data",data);return JSON.toJSONString(jsonObject);}
}

全局跨域配置:WebMvcConfigurer

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry corsRegistry) {corsRegistry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS").allowCredentials(true).maxAge(3600).allowedHeaders("*");}
}

静态(static)方法中调用接口(Service层)

@Component
public class JwtUtil {/*** 静态方法调用非静态接口层(Service层)*/public static JwtUtil jwtUtil; //声明对象@PostConstruct //初始化public void init() {jwtUtil = this;jwtUtil.userService = this.userService;}@Autowired //注入UserService userService;public static boolean checkSign(String token) {
...String username= jwtUtil.userService.getUsernameById(userId);
...
}

定时任务

package com.example.demo.util;import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;@Component
@EnableScheduling //开启定时任务
@EnableAsync //开启多线程
@Slf4j
public class ScheduleAsync {/** cron* [秒] [分] [小时] [日] [月] [周] [年]* 年非必须* *每秒/分/小时/日...都会触发* ?不指定值,只可用于日和周* 1-3表示区间,1、2、3都会触发* 5/15表示递增触发,从5开始,每15秒触发* L表示最后一天或周六*/@Async@Scheduled(cron = "0/10 * * * * ?")//从00开始每十秒public void first(){log.info(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}@Async@Scheduled(cron = "0 0 2 * * ?")//每天半夜两点public void second(){log.info(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDF.js介绍以及使用

一、PDF.js是什么 PDF.js是一个JavaScript库,可以在现代Web浏览器中渲染和显示PDF文件。它的主要作用是将PDF文件转换为HTML5格式,以便在浏览器上进行展示和交互。 PDF.js的主要功能包括: 在浏览器中显示PDF:PDF.js使用HTML5的…

hab_virtio hypervisor 虚拟化

Linux的 I / O 虚拟化 Virtio 框架 简而言之,virtio是半虚拟化管理程序中设备上的抽象层。virtio由Rusty Russell开发以支持他自己的虚拟化解决方案lguest。本文从准虚拟化和仿真设备的介绍开始,然后探讨的细节virtio。重点是virtio2.6.30内核发行版中的…

Pytorch:torch.sum()函数用法

torch.sum() 先看看官网描述:https://pytorch.org/docs/stable/generated/torch.sum.html#torch.sum 函数torch.sum有两种形式: 第一种:   torch.sum(input, *, dtypeNone) → Tensor .   Returns the sum of all elements in the inp…

【华为数据之道学习笔记】6-4 打造数据供应的“三个1”

数据服务改变了传统的数据集成方式,所有数据都通过服务对外提供,用户不再直接集成数据,而是通过服务获取。因此,数据服务应该拉动数据供应链条的各个节点,以方便用户能准确地获取数据为重要目标。 数据供应到消费的完整…

Deployment Controller详解(上)

上一篇在《Kubectl 部署无状态应用》中介绍了如何使用 Deployment 部署五个 hello world 实例时,我们并没有详细探讨 Deployment Controller 的各项功能。因此,本文将深入介绍 Deployment Controller 的作用以及它能够完成的任务。 本文来自官方文档梳理…

深入理解依赖反转原则(DIP)

依赖反转原则是一个比较重要的架构原则,从定义上看是要依赖于抽象,不要依赖于细节, 这个听起来很简单,好像加个接口就完事了,大家的service都是一个接口配一个实现类,是不是依赖倒置呢?很显然不…

第11章 GUI Page417~418 步骤五 支持方框 使用宏定义

运行效果: 原来的创建item的方式: 使用宏定义的方式:

Java之LinkedList核心源码解读

LinkedList核心源码解读 LinkedList 是一个基于双向链表实现的集合类,经常被拿来和 ArrayList 做比较 LinkedList 插入和删除元素的时间复杂度? 头部插入/删除:只需要修改头结点的指针即可完成插入/删除操作,因此时间复杂度为 O…

PHP数组定义和输出

数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。 PHP中的数组与Java的数组不一样,需要有key(键)和value(值),相当于Java中数组和键值对的结合。 数组的定义 …

redis 从0到1完整学习 (六):Hash 表数据结构

文章目录 1. 引言2. redis 源码下载3. dict 数据结构4. 哈希表扩容与 rehash5. 参考 1. 引言 前情提要: 《redis 从0到1完整学习 (一):安装&初识 redis》 《redis 从0到1完整学习 (二):red…

【Linux笔记】用户和权限管理基本命令介绍

🍎个人博客:个人主页 🏆个人专栏:Linux学习 ⛳️ 功不唐捐,玉汝于成 目录 ​编辑 前言: 命令: whoami: passwd: useradd: userdel: chm…

37.常用shell之 nano / vi / vim - 文本编辑器 的用法及衍生用法

nano, vi, 和 vim 是在类 Unix 系统中常用的文本编辑器,每个都有其特定的用法和功能集。 nano nano 是一个简单易用的文本编辑器,适合初学者和那些需要轻量级编辑器的用户。 基本用法: 打开或创建文件:nano filename这会打开 fi…

css 实现满屏升空的气球动画

最终实现效果 demo放在最后了。。。。 问题一 怎么实现满屏气球?简单理解就是多个气球的合并,难道要写多个盒子吗?确实是这样子,但可以有更好的办法,其实就是通过原生操作多个盒子生成,所以只需要实现一个…

智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工大猩猩部队算法4.实验参…

YZ系列工具之YZ03:高版本Excel的自定义菜单

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

关于游戏性能优化的技巧

关于游戏性能优化的技巧 游戏性能优化对象池Jobs、Burst、多线程间隔处理定时更新全局广播缓存组件缓存常用数据2D残影优化2D骨骼转GPU动画定时器优化DrawCall合批处理优化碰撞层优化粒子特效 游戏性能优化 好久没有在CSDN上面写文章了,今天突然看到鬼谷工作室技术…

docker部署mysql主主备份 haproxy代理(swarm)

docker部署mysql主主备份 haproxy代理(swarm) docker部署mysql主主备份 docker部署mysql主主备份(keepalived)跨主机自动切换 docker部署mysql主主备份 haproxy代理(swarm) 1. 环境准备 主机IPnode119…

QT调用外部exe及无终端弹窗的解决方案、并实现进程输出信息获取

博主使用QT调用外部exe程序&#xff0c;外部exe程序有printf输出&#xff0c;起初使用的是C语言中的system()方法&#xff0c;但在笔记本上有概率出现终端窗口一闪而过的情况&#xff0c;后修改了调用方案。 1. QT调用外部exe 使用QT中的QProcess方法 #include <QProcess…

pytest常用命令行参数

文章目录 一、前置说明二、操作步骤1. 命令行中执行:pytest2. 命令行中执行:pytest - v3. 命令行中执行:pytest -s4. 命令行中执行:pytest -k test_addition5. 命令行中执行:pytest -k test_pytest_command_params.py6. 命令行中执行:pytest -v -s -k test_pytest_comman…

WSL移动ubuntu到其他盘的几个问题以及安装,使用过程中遇到bug记录

这里写目录标题 无法正常修改Ubuntu系统的默认用户解决方案1&#xff1a;解决方案2&#xff1a; 出现 id xxx no such userGUI不能正常显示 无法正常修改Ubuntu系统的默认用户 ubuntu移动到其他盘可以参考WSL Ubuntu子系统迁移到非系统盘 下面问题是我安装时遇到的&#xff0c…