
SpringBoot
文章平均质量分 60
阿瑟与非
程序员只佩服强者。
展开
-
Springboot导出大数据量excel(三)-导出csv到压缩包
一、简介在上篇文章《Springboot导出大数据量excel(二)-分页查询数据List<Map>》说道excel的最大支持数据行数1048576(2的20次方)。本文内容主要就是解决这个问题。二、效果展示导出200行数据,每个文件存储10万行数据。三、源码controller @RequestMapping(value = "export5", method = RequestMethod.GET) @ApiOperation(value =...原创 2022-03-27 08:32:40 · 2945 阅读 · 0 评论 -
Springboot导出大数据量excel(二)-分页查询数据List<Map>
一、简介在上篇文章《Springboot导出大数据量excel》说道查询数据量过大的时候还没到导出的时候就会导致内存溢出(或者占用服务较大内存)的问题。本文内容主要就是解决这个问题。注意:excel的有最大支持数据行数1048576(2的20次方),超出会报异常:{"code":500,"msg":"fail","data":"Invalid row number (1048576) outside allowable range (0..1048575)"}解决方案:...原创 2022-03-26 19:13:05 · 4489 阅读 · 0 评论 -
Springboot导出大数据量excel(一)-入门
目录一、简介二、性能测试1环境2测试ExcelExportUtil.exportExcelExcelExportUtil.exportBigExcel三、源码1maven依赖2测试代码一、简介1查询数据量过大,导致内存溢出。 该问题可以通过分批查询来解决;2最后下载的时候大EXCEL转换的输出流内存溢出;该方式可以通过新版的SXSSFWorkbook来解决,可通过其构造函数执指定在内存中缓存的行数,剩余的会自动缓存在硬盘的临时目录上,同时,并不会存在页面.原创 2022-01-16 22:17:53 · 6711 阅读 · 0 评论 -
springboot使用aop实现接口异步(进度条)
一、前言在项目中发现有接口(excel导入数据)处理数据需要耗时比较长的时间,是因为数据量比较大,同时数据的校验需要耗费一定时间,决定使用一种通用的方法解决这个问题。解决方案:通过aop使接口异步处理,前端轮询另外一个接口查询进度。目标:1接口上一个注解即可实现接口异步(优化:可以通过header参数动态控制是否异步)2一个方法实现进度条的更新二、时序图三、功能演示四、关键代码Controller@EnableAsync是自已定义注解更新缓存进度.原创 2022-01-02 21:40:10 · 4266 阅读 · 5 评论 -
springboot自定义jackson日期序列化(支持返回不同格式)
一、前言 在接口开发过程中,针对Date类,接口请求参数需要支持不同的格式的日期格式字符串,同样接口的返回值需要根据不同的条件动态的返回不同格式的日期字符串。自定义序列化:使接口可以同时接收不同格式的日期,比如:yyyy/MM/dd和yyyy-MM-dd自定义反序列化:使接口可以根据不同的header返回不同格式的日期二、效果展示三、源码DateSerializerimport com.fasterxml.jackson.core.JsonGenerato...原创 2021-12-25 16:42:57 · 3485 阅读 · 0 评论 -
SpringBoot使用jackson自定义反序列化接收不同格式的日期
一、前言需求:SpringBoot接口兼容不同格式的日期。实现方式:继承JsonDeserializer实现自定义的反序列化。二、源码DateDeSerializerimport cn.hutool.core.date.DateUtil;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxm原创 2021-12-19 11:02:04 · 1802 阅读 · 3 评论 -
SpringBoot下载freemarker转换的图片docker部署示例(解决中文方块)
目录一、需求背景二、效果预览错误示范正确示范三、docker部署1.dockerfile2.windows部署目录3.中文乱码解决四、linux部署五、参考一、需求背景部署到服务器之后,在使用freemark模板生成Html转为img文件的时,中文会变成小方块。部署环境:linux、docker二、效果预览错误示范正确示范三、docker部署1.dockerfile# 基础镜像from sapmac...原创 2021-08-11 21:58:41 · 560 阅读 · 0 评论 -
SpringBoot下载freemarker转换的图片(高清不模糊)
一、背景二、效果预览三、项目1.maven2.FreemarkerUtil3.Controller4.freemarker文件四、git项目地址一、背景需要根据不同的参数书将freemarker的模板转成图片返回给前端下载。二、效果预览三、项目1.maven <dependency> <groupId>org.xhtmlrenderer</groupId> ...原创 2021-08-09 16:42:01 · 1232 阅读 · 5 评论 -
SpringBoot配置文件application.properties和application.yml
一、application配置优先级1.文件或路径的优先级:4>3>2>1,4的属性会覆盖其他的2.properties的属性会覆盖yml的属性二、bootstrap和application的加载顺序网上有些说法是:bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootStrap.yml 被加载,则内容不会被覆盖。ps:会不会覆盖,在自己的项目中进行实测。经过实际测试原创 2021-02-28 11:17:51 · 758 阅读 · 0 评论 -
SpringBoot+Vue下载txt文件
目录一、前言二、后端SpringBoot接口V1.跨域配置2.Controller接口三、前端代码四、测试结果一、前言1.SpringBoot需要配置跨域2.前端使用axios下载txt文件二、后端SpringBoot接口1.跨域配置import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;i原创 2021-02-25 23:19:02 · 1518 阅读 · 0 评论 -
SpringBoot整合WebServices(Apache CXF JAX-WS)(二)身份认证
一、简介在使用WebService时我们经常会考虑WebService的安全问题,可以通过一组用户名与密码来防止非法用户的调用 。二、示例代码沿用:https://blog.youkuaiyun.com/cs373616511/article/details/1127549861.服务端...原创 2021-01-24 21:57:54 · 775 阅读 · 0 评论 -
SpringBoot整合WebServices(Apache CXF JAX-WS)(一)入门示例
目录一、简介Web Services 简介soap协议Apache CXF二、WebService框架Apache CXFApache axis2Spring Web Services三、Apache CXF JAX-WS示例1.创建SpringBoot项目并添加jaxws依赖2.创建接口3.WebServiceConfig配置类4.启动项目5.测试WebService(1)使用idea生成客户端(2)测试一、简介Web Serv.原创 2021-01-17 18:35:57 · 2524 阅读 · 4 评论 -
Jackson序列化json时null转成空对象或空串
在项目中可能会遇到null,转JSON时不希望出现null,可以添加下面的配置解决这个问题。一、添加JacksonConfig 配置import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.d原创 2020-12-25 09:15:53 · 3748 阅读 · 1 评论 -
SpringBoot-maven打包本地jar包笔记
在网上找了很多文章,综合起来才实现了一版成功打包的配置,在此记录一下。1.SpringBoot项目目录jar放在lib文件夹2.引入jar包的方式:File -> Project Structure添加jar到项目3.maven pom.xml的关键配置 <build> <plugins> <plugin> <groupId>org.springfra原创 2020-10-24 21:30:21 · 430 阅读 · 0 评论 -
SpringBoot通过aop获取@RequestBody参数记录到日志
一、前言 通过request.getInputStream();的方式获取body参数实现起来比较复杂,因为输入流只能被使用一次。通过使用Spring的aop中point.getArgs()方法可以获取body参数,这种对源代码的侵入性比较小,优先选择。参考:spring boot aop 中获取requestbody参数二、打印结果2020-07-23 14:04:41.194 |-INFO [http-nio-8080-exec-1] com.asyf.demo.con...原创 2020-07-23 14:14:28 · 15887 阅读 · 6 评论 -
SpringBoot事务传播属性测试
一、七种事务传播属性Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力。默认是Propagation.REQUIRED。Propagation.REQUIRED 如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。 Propagation.SUPPORTS 如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。 Propagation.MANDATORY 如果当前存原创 2020-06-28 15:18:09 · 1405 阅读 · 0 评论 -
https单向认证和双向认证demo(SpringBoot+okhttp3+keytool自签名)
目录一、前言二、软件版本三、单向认证四、双向认证一、前言HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 S...原创 2020-04-20 13:51:41 · 3835 阅读 · 4 评论 -
SpringBoot配置https并实现http访问自动跳转https(自定义证书)
一、准备elasticsearch-7.3.2(下载解压即可用)SpringBoot2.1.2二、生成证书使用elasticsearch-certutil生成springboot.p12证书elasticsearch-certutil官方文档https://www.elastic.co/guide/en/elasticsearch/reference/7.6/certuti...原创 2020-04-09 16:31:16 · 4857 阅读 · 5 评论 -
SpringBoot全局异常拦截并输出详细异常信息到日志文件
一前言SpringBoot项目中使用全局同意异常处理能方便控制接口异常返回值的JSON数据结构。但是错误信息需要方便后台开发人员查看BUG的错误日志。本文实现一种打印错误日志信息的方法。二代码写一个接口,使其抛出空指针异常,然后查看日志文件application.properties:配置上logback-spring.xml#端口号server.port=808...原创 2020-04-03 10:27:25 · 7436 阅读 · 0 评论 -
jmeter测试SpringBoot+Redis令牌桶算法实现接口限流实例
一、前言在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流1缓存缓存的目的是提升系统访问速度和增大系统处理容量2降级降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开3限流限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处涉及到的技术:(1)...原创 2020-03-25 15:51:46 · 1551 阅读 · 1 评论 -
SpringBoot整合swagger2、pagehelper插件实战
一、背景介绍1.swagger2 是一个规范和完整的框架,用于生成、描述、调用和可视化Restful风格的web服务。2.mybatis的分页插件pagehelper,能方便的完成分页功能。二、创建项目1.新建springboot项目2.引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="...原创 2020-02-25 18:23:55 · 1596 阅读 · 1 评论 -
SpringBoot使用HibernateValidator分组校验实现参数校验排序
目录一、需求二、实现方式三、实例1增加配置文件使用快速失败模式2创建测试实体类3创建congtroller4使用postman测试接口四、解决排序问题1新增注解2修改Controller类3修改实体类4测试一、需求StringBoot开发POST接口使用HibernateValidator校验@RequestBody注解的参数时,需要对...原创 2020-02-18 16:27:44 · 2429 阅读 · 0 评论 -
Springboot2.0.3整合druid多数据源(不重启项目动态添加数据源)和数据监控,附源码
springboot升级Springboot1.5.6整合druid(不重启项目动态添加数据源)和数据监控,附源码需要源码请留下您的邮箱!https://download.youkuaiyun.com/download/cs373616511/11233398怎么才能让资源下载不需要5积分/C币呢?...原创 2019-06-10 11:44:59 · 1565 阅读 · 18 评论 -
Springboot1.5.6整合druid(不重启项目动态添加数据源)和数据监控,附源码
一、要点:1.重写AbstractRoutingDataSource类的determineCurrentLookupKey方法,实现数据源的切换2.ThreadLocal 保证当前线程安全的前提下设置当前线程的数据源3.application.properties文件配置数据源为spring.datasource.type=com.alibaba.druid.pool.DruidDat...原创 2018-09-24 11:15:14 · 8622 阅读 · 18 评论