![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 64
筏镜
这个作者很懒,什么都没留下…
展开
-
从request 中解析上传参数
前言我们项目经常会在真正进入接口方法之前,对参数进行解析。进行一些预处理,比如权限校验、让接口进入到我们预定方法之中。实践1、添加依赖,这里会用到关于上传文件中依赖(处理当是form-data类型的时候),其他关于会涉及到web依赖不再贴出 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</art原创 2022-01-09 13:08:52 · 533 阅读 · 0 评论 -
手动创建代理实现AOP功能
前言我们在很多时候,并不能直接使用spring aop功能,需要自己实现代理对java代码进行aop操作。这里使用手动代理的方式对AOP进行处理。实践一、定义一个注解用于需要特殊处理的方法@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface StepAnnotation { String name();}二、定义一个BeanPostProcessor原创 2021-11-27 15:18:00 · 549 阅读 · 0 评论 -
swagger使用过程中遇到的坑
前言今天给两个项目添加swgger 都不顺利这里将,两个项目中遇到问题和解决方案贴出来。基本配置这里先贴出比较通用的swgger 的配置1、添加swgger 的配置<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId>原创 2021-07-30 19:00:50 · 517 阅读 · 0 评论 -
SpringBoot 自动配置原理讲解
前言如果需要了解Springboot 那么自动配置是少不了的,自从有了 SpringBoot 之后,各种零配置自动在加载,今天我们就一起来讨论一下 SpringBoot 自动配置原理。预备知识这里的预备知识主要关注@Import 注解,@Import主要支持三种类的导入a、直接导入普通的 Java 类。b、 ImportSelector 的实现类 使用。c、ImportBeanDefinitionRegistrar 实现类。这里写一个demo来验证一下对应内容。1、一个普通类public原创 2021-07-14 18:58:59 · 186 阅读 · 0 评论 -
XXL-Job动态添加任务
前言最近项目中涉及到了定时任务相关需求,最终选择了分布式任务调度框架xxl-job,由于我们在使用xxl-job。这里对xxl-job 一些使用做一下简单介绍。实践xxl-job 主要分为一个展示web的独立服务,另外一个是我们项目引入xxl-job依赖,对定时任务做监听。这里不对xxl-job 部署独立服务做介绍,主要介绍如何引入xxl-job依赖进行创建定时任务。一、配置yml# 定时任务中心配置信息job: server: enabled: true # 校验令牌,和原创 2021-06-22 10:49:42 · 10855 阅读 · 4 评论 -
SpringBoot + Flowable的使用
前言我们在项目中需要使用到Flowable,鉴于之前对流程引擎并不是很了解,这里准备写一篇作为入门文章。实践这次例子是基于springboot + Flowable ,springboot 的版本是2.3.4.RELEASE,Flowable 的版本为6.3.01、依赖<!--flowable工作流依赖--> <dependency> <groupId>org.flowable</groupId>原创 2021-04-28 10:57:01 · 10484 阅读 · 2 评论 -
spring-security 实现单点登录
前言一、maven依赖二、application.yml 配置三、security 的配置对应文件四、对校验提供provider五、权限验证具体实现类六、token、用户具体实现类七、需要handler(成功、失败、禁止)类八、自定义异常类九、支撑vo十、工具类现在基本每个系统都有单点登录,基本稍微大一点公司都有自己搭建一套单点登录系统,其他所有项目直接接入。但有时候独立项目,需要自己实现一套登录系统,如果网上很多时候的代码很难拿来即用,每次自己全新构造一个又过于麻烦。我这里尝试弄一套登录系统,我们后续再原创 2021-02-16 16:08:37 · 4077 阅读 · 1 评论 -
工具类中引用Spring IOC容器对象的处理方案
前言我们在工具类中引入spring ioc容器中,在static 方法中使用需要使用。放在该ioc容器上面报Non-static field ‘jedisCluster’ cannot be referenced from a static context 这种错误。这个是因为spring 初始化容器的速度,可能会慢于工具类报错的速度导致该方法调用失败。实践我们遇到这种问题,一般会有两种方案。第一个是将该对象作为方法调用传参使用。特别是当该工具类的使用普遍、方法比较多的情况显得很麻烦。第二种、通过调用原创 2021-02-13 14:40:51 · 605 阅读 · 0 评论 -
SpringBoot整合WebSocket实现前后端互推消息(服务器能能够引用spring IOC对象)
前言我们在项目中可能会遇到这样的场景,平台接收到的信息实时发布给所有的用户,其实就是后端主动向前端广播消息。这样的场景可以让前端轮询实现,但是要达到接近实时获取信息的效果就需要前端短周期的轮询,HTTP请求包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源,周期越短服务器压力越大,如果用户量太大的话就杯具了。所以小编就想到了WebSocket和长轮询都是比较合适实现方式。这里将webSocket进行代码演示。实践一、引入maven依赖 <!-- h原创 2021-01-17 23:41:08 · 362 阅读 · 0 评论 -
springboot启动脚本start.sh和停止脚本 stop.sh
我们在项目中都会遇到项目打包,可以通过assembly对我们的项目进行打包。针对打包构建jar包,本文不再叙述。具体可以参考maven插件assembly使用及springboot启动脚本start.sh和停止脚本 stop.sh这里面已经有一个springboot 的启动脚本了,本文之所以还要写,是因为之前的脚本存在一个问题。关闭脚本的时候是通过kill -9 命令进行的,但其实我们项目中可能很多时候不能强制关闭的,在关闭之前需要做一些事情。比如将内存数据存到磁盘,dubbo清空zookeeper里面原创 2020-08-22 17:06:20 · 3427 阅读 · 0 评论 -
文件下载和二进制文件(图片、mp4视频)预览响应头的设置(防止中文名名乱码)
工作中文件下载是一个非常常见的功能,但请求头设置却经常容易忘记。这里写一个样例供大家参考。这里设置文件编码格式,主要防止下载文件中文名乱码。一、文件下载1、主要设置 下载的类型2、设置下载文件的名称 @GetMapping("/downloadFile") public void downloadFile(HttpServletResponse response,@RequestP...原创 2020-05-01 22:22:04 · 3123 阅读 · 0 评论 -
@ConditionalOnExpression 控制是否初始bean
我们有时候会遇到一些bean希望通过注册中心控制是否被初始化,@ConditionalOnExpression可以帮我们办到。这里写过小例子。1、这个配置是我们上传文件指定临时目录的配置,这里通过这个查看是否注入成功。在我们想要注入控制注解添加 @ConditionalOnExpression("${is.inject:true}"),通过配置文件来控制是否注入。@Configuration...原创 2020-03-26 23:06:18 · 616 阅读 · 0 评论 -
全局异常处理
我们当项目变得比较大的时候,开始不可避免添加全局异常处理。主要为了针对项目能够进行统一的管理,这里我将异常处理基本结构写出供大家参考。1、异常处理主要针对是异常处理的捕获类和对异常处理的具体处理方式,这里我将异常中简单分为自定义异常和其他异常。@RestControllerAdvicepublic class GlobalExceptionHandler extends BaseGlobal...原创 2020-03-14 23:10:55 · 468 阅读 · 0 评论 -
接口幂等性的解决方案(用springboot配置拦截器redis校验token 是否重复)
幂等性的含义:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是对数据库的影响只能是一次性的,不能重复处理。在我们编程中中一些常见的操作:1、select查询天然幂等2、delete删除也是幂等,删除同一个多次效果一样3、update直接更新某个值的,幂等4、update更新累加操作的,非幂等5、insert非幂等操作,每次新增一条造成多次请求的原因:1...原创 2020-03-14 00:21:53 · 2304 阅读 · 2 评论 -
java项目的远程调试
我们在工作中可能会遇到这样的场景,有时候有个问题在本地环境不重现开发或者测试环境的问题,而这个问题需要急需解决的情况。更有部分项目在本地无法启动,需要依赖在服务器启动,有时候可以尝试远程调试。我这里用springboot项目,做一下演示;在现在项目启动,基本都是采用start.sh文件来启动,如果需要远程用idea,连接到服务器。需要在启动的时候添加一行参数启动。1、启动项目时配置远程连接参...原创 2020-02-09 17:34:41 · 284 阅读 · 0 评论 -
Springboot 中各个filter如何调整执行顺序(通过@Order,Ordered,FilterRegistrationBean三种方式)
我们在使用filter不可避免的会用到过滤器,在还未使用springboot的的项目的时候,都是讲过滤器配置在web.xml中。配置的越靠前,filter越先执行。现在很多都是用@WebFilter注解,看到下面注解源码,并没有参数指定顺序。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpu...原创 2019-12-15 21:35:24 · 20578 阅读 · 3 评论 -
okhttp 文件上传
我们遇到很多关于数据的http转调其他接口,有时候会遇到文件的转调,这里将文件转调的例子贴出,供大家参考。1、我们这次是通过okhttp的转调的故现将okhttp的依赖引入 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId&...原创 2019-12-15 15:13:59 · 1139 阅读 · 0 评论 -
springboot整合hystrix对请求进行降级
hystrix功能:1、 资源隔离。就是对对应的接口分配线程池,避免说对一个接口的过多调用,因为依赖服务接口调用的失败或者延迟,导致所有的线程资源都全部耗费在这个接口上。一旦某个服务的线程资源全部耗尽可能导致服务的崩溃,甚至故障蔓延。2、降级机制。超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。下面是springboot和hystrix的整合案例:下面需要用到...原创 2019-12-14 22:55:52 · 1408 阅读 · 0 评论 -
elasticJob实现动态增加定时任务、动态增加定时任务、动态修改定时任务
一、定时任务很多都是配置在配置文件中,但很多时候我们需要根据业务需要调整动态增删改定时任务,这里写出例子供大家参考。(1)maven依赖 <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-...原创 2019-10-14 23:59:17 · 3440 阅读 · 4 评论 -
springboot定时任务 通过elasticJob实现
一、项目中一般都会有定时任务,如何保证定时任务在集群只执行一次,可以通过elastic-job 实现定时任务分布式部署。(1)增加elastic-job 对于配置文件的依赖 <dependency> <groupId>com.dangdang</groupId> <artifactId>elast...原创 2019-09-14 22:18:39 · 791 阅读 · 0 评论 -
springboot项目连接多个数据库
springboot项目连接多个数据库欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...原创 2019-09-12 00:09:24 · 11631 阅读 · 0 评论 -
aop切面 注解、参数获取方法
在工作中会经常使用aop,这里将aop使用基本方法,获取在切点中使用的获取参数、注解做一个样例。1、定义需要切面的注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface AnnDemo { String value(); boolean isA...原创 2019-08-25 22:26:54 · 31286 阅读 · 0 评论 -
springboot项目初始化和项目结束调用自定义方法
1、在项目启动类中实现CommandLineRunner,实现run方法。run方法会在项目启动后调用。@SpringBootApplication@MapperScan(basePackages = "com.yin.freemakeradd.mapper")public class FreemakeraddApplication implements CommandLineRunner ...原创 2019-08-13 22:29:46 · 2002 阅读 · 0 评论