![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 75
springboot
暮色里de白雪檐
相信自己,人生之美在于当下
人生四季,寒暑交替,笑看起起落落
心若简单,生活就简单
展开
-
【SpringAop】【统一日志处理】注解方式理解以及使用
Retention(RetentionPolicy.RUNTIME) // 什么时候使用该注解,我们定义为运行时;@Target({ElementType.METHOD}) //用于什么地方,我们定义为作用于方法上;@Documented //注解是否将包含在 JavaDoc 中配置AOP切面@Aspect:声明该类为一个注解类;@Pointcut:定义一个切点,后面跟随一个表达式,表达式可以定义为切某个注解,也可以切某个 package 下的方法;原创 2020-07-15 15:56:00 · 356 阅读 · 1 评论 -
并发编程:ScheduledThreadPoolExecutor你真的了解吗?
创建一个配置类来定义你的ScheduledThreadPoolExecutor实例。@Bean// 设置线程池大小// 设置线程前缀// 取消任务时是否移除注意,虽然上述示例中使用了ThreadPoolTaskScheduler,它是Spring对定时任务线程池的封装,底层也是基于实现的,因此适合用于集成定时任务。原创 2024-05-25 15:28:16 · 708 阅读 · 0 评论 -
Spring Upload File 报错FileNotFoundException
我们在项目中肯定经常遇到文件流相关的问题,本篇博文就是记录下使用文件路径不当引发的错误。转载 2024-05-24 18:23:56 · 30 阅读 · 0 评论 -
链路追踪原理
随着业务需求的快速变化和技术的演进,当一个用户请求需要跨越多个线程时,形成了复杂的调用链路。当出现性能问题、错误或故障时,导致故障排查、性能优化和业务逻辑理解变得困难。本文主要论述链路追踪的原理。原创 2024-05-21 18:39:14 · 170 阅读 · 0 评论 -
线程池异常如何处理?
忽的一下,想到了线程池的比较重要的一个参数:ThreadFactory接口,这个接口的作用是按需创建新线程的,使用线程工厂消除了对Thread#Thread(Runnable) new Thread的强依赖,使应用程序能够使用特殊的Thread子类、优先级等。大白话就是让线程池中的线程使用我们自定义的线程,这个自定义可不是我们通过execute()或submit()传进来的自定义线程,而是Worker类中的thread变量,也就是实际运行的线程,我们看一下Worker类的构造方法。原创 2024-05-17 17:04:28 · 1025 阅读 · 0 评论 -
如何优雅的实现接口限流?
首先限流,其实解决方案有很多,比如通过nginx配置,通过gateway网关进行限流,比如Spring Cloud GateWay整合熔断器实现限流但是以上都是全局的,如何灵活的针对某些接口进行不同级别的限流呢?原创 2024-05-09 20:32:30 · 402 阅读 · 0 评论 -
SpringBoot中多数据源灵活切换解决方案
本篇内容介绍了“SpringBoot中如何使用Dynamic Datasource配置多数据源”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持无数据源启动,支持配置懒启动数据源(3.3.2+)。支持数据库敏感配置信息 加密 ENC()。支持每个数据库独立初始化表结构schema和数据库database。原创 2024-04-26 18:11:35 · 1052 阅读 · 3 评论 -
SSE高可用方案
SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,也被称为“事件流”(Event Stream)。它基于 HTTP 协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化连接,并通过这条连接实现服务器向客户端的实时数据推送。原创 2024-04-07 11:29:06 · 980 阅读 · 0 评论 -
Spring Retry重试机制
重试的使用场景比较多,比如调用远程服务时,或者feign远程调用的重试,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次。用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有。话不多说,先看演示。翻译 2024-03-22 13:56:35 · 76 阅读 · 0 评论 -
【Elasticsearch】从入门到精通
吕老师:但是 Lucene 还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于 Lucene 进行封装,写出了 Elasticsearch吕老师:类型是用来定义数据结构的,你可以认为是 MySQL 中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录吕老师:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫 Poems 的索引,然后创建一个名叫 Poem 的类型,类型是通过 Mapping 来定义每个字段的类型。原创 2024-02-04 14:31:58 · 1286 阅读 · 0 评论 -
自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏【权限控制】
我们在使用手机银行的时候经常能看到APP上会将银行卡的卡号中间部分给隐藏掉使用 ***** 来代替,在某些网站上查看一些业务密码时(例如签到密码等)也会使用 ***** 来隐藏掉真正的密码,那么这种方式是如何实现的呢?我们这篇文章的实现思路就基于Hutool来实现,在Hutool中提供了一个名为 DesensitizedUtil 的工具类,我们使用这个工具类来加密。原创 2023-12-26 11:06:22 · 998 阅读 · 0 评论 -
【CompletableFuture】批量异步任务处理
当我们在项目中遇到很多业务同时处理,如果是串行肯定是影响性能的,这时候就需要异步执行了,说道异步肯定就有很多方案了。原创 2023-11-07 17:11:06 · 451 阅读 · 0 评论 -
获取上下文(ApplicationContext)工具类
【代码】获取上下文(ApplicationContext)工具类。原创 2023-10-30 15:06:23 · 200 阅读 · 0 评论 -
springboot实现全局事务管理
首先需要实现全局事务管理,你得知道事务的原理包括一些事务的基础概念。原创 2023-10-09 17:54:13 · 457 阅读 · 0 评论 -
【Maxwell】MySQL数据监听
我们都知道随着业务的发展,监听数据库的数据变更及时性是必须的,虽然我们可以在入库之前进行处理,但是有个问题就是事务的一致性不好掌控,而且很多业务都是微服务的,那么不在一个微服务中,可能有需要跨服务去调用,那么此时直接去监听mysql的binlog来实现数据的操作既可以实现及时性又可以和业务解耦目前市面上比较流行的就是cancel和maxwell,那么我们该如何去选型呢?这里我说下我的选型历程。原创 2023-05-05 14:34:34 · 863 阅读 · 1 评论 -
【如何优雅的实现延迟消息多次提醒】方案集合
如何利用redis去实现延迟消息,redis的性能是最好的,也是最轻量级的,本篇博客介绍了五种不同的方式原创 2023-04-21 15:31:34 · 674 阅读 · 0 评论 -
【拦截器、过滤器、springAop】那些不为人知的隐秘
前后端交互使用密文传输,实现aop动态密文加解密原创 2023-02-20 10:28:06 · 2965 阅读 · 0 评论 -
【性能优化】-多线程实现百万级导出/导入到excel
百万级数据如何优化导出原创 2022-12-29 17:09:09 · 3421 阅读 · 4 评论 -
【对接三方平台如何优雅的进行数据校验-validation/valid神器】
对接各个三方系统进行数据校验原创 2022-12-08 17:43:17 · 338 阅读 · 0 评论 -
Json转bean-【下划线和陀螺峰格式互转】
big Json转bean,将下划线和陀螺峰互转原创 2022-12-05 14:17:15 · 1716 阅读 · 0 评论 -
JavaBean处理器之MapStruct
bean对象如何优雅的复制、转换原创 2022-07-19 14:14:39 · 497 阅读 · 0 评论 -
Spring Cloud GateWay-过滤器
说起过滤器可能有不少实现方式,比如spring自带的就可以实现Spring Boot实战-配置过滤器的两种方式这篇文章说的是Spring Cloud GateWay-过滤器,因为由于微服务的兴起,现在各个项目都会采用网关进行单独的资源隔离、token校验等,而不是放在下游的业务服务进行处理Gateway 过滤器总结filter的作用和生命周期Zuul1.x 阻塞式IO 2.x 基于Netty,Spring Cloud GateWay天生就是异步非阻塞的,基于Reactor模型;一个请求–>网原创 2022-05-26 16:04:54 · 3664 阅读 · 0 评论 -
如何真正的灵活使用springboot自定义注解进行自动装配?
各位铁子们,说道自动装配,大家可能都已经滚瓜烂熟了,自动装配经常看到或者日常开发中随处可见,但是有几个真正的是是实战过呢,我怕说的实战可不是简单按照百度或者视频上按照模板套一个哟,如果是是这样也太小看自动装配了,我指的是你为自己的项目需要而开发的可插拔式的jar或者开关性的配置类,不一定按照模板来实现,如果懂我说这句的意思就会知道如果你有时候为了实现一个自动装配的配置类按照模板来实现会创建多余的类,废话不多说,接下来大家对号入座吧基础知识了解@Import注解到底知多少?导入配置的三种类型带有@C原创 2022-03-08 17:05:19 · 409 阅读 · 0 评论 -
浅谈Nacos Config动态刷新原理及作用
背景由于微服务引入至今,相信大部分公司的小伙伴都已经对微服务的使用有了一定的熟练度了,那么每个项目中肯定都有属于自己的配置文件,小企业呢对于配置的规范肯定不是那么严谨,一味的在一个或者多个配置文件中添加,那么多个微服务呢?有需要重复造轮子了,这是其一,其二呢,配置文件经常需要修改,比如什么阿里云、redis、kafka等一系列的中间件会随着不通环境(测试环境、开发环境、生产环境)的不同而改变,这种情况下,总不能把每个微服务模块逐一去启动吧,先不说启动的过程中会造成服务的卡顿而使得用户体验不佳,这么多服务启原创 2022-02-25 10:21:24 · 2970 阅读 · 0 评论 -
java日志框架如何选型?
对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul日志框架类别Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一Log4j 2 Apache Log4j 2是apach原创 2021-12-10 18:23:39 · 1114 阅读 · 0 评论 -
Spring 自定义注解后,如何获取添加了该注解的所有类?终极解答
问题需求通常在业务开发时,我们可能会用到自定义注解(自定义注解的使用和解析,本章暂不介绍)。在使用自定义注解后,我们需要获取使用了该注解的所有类,然后做一个验证。那么、问题来了,我们如何获取被某注解标注的所有类呢?请欣赏下文具体实现定义两个注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documentedpublic @interface RespMegTypeSup { public String val翻译 2021-11-05 17:27:14 · 4358 阅读 · 0 评论 -
浅谈springboot启动时执行:@PostConstruct 、CommandLineRunner、ApplicationRunner、ApplicationListener区别
使用场景我们在开发过程中会有这样的场景:需要在项目启动后执行一些操作,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,工厂类初始化等。我们会有多种的实现方式,例如@PostConstruct 、CommandLineRunner、ApplicationRunner、ApplicationListener都可以实现在springboot启动后执行我们特定的逻辑,接下对比下他们的区别@PostConstruct该注解被用来修饰一个非静态的void方法,被@PostConstruct修饰的方原创 2021-10-26 15:28:20 · 3078 阅读 · 0 评论 -
SpringBoot基于@Scheduled实现分布式定时调度两种方式
基于@Scheduled实现分布式任务定时调度常见的有两种方式:第一种就是SpringBoot基于@Scheduled集成Redis实现分布式定时锁第二种是SpringBoot集成ShedLock实现分布式定时锁翻译 2021-07-21 10:14:20 · 2788 阅读 · 0 评论 -
SpringBoot中实现定时任务的两种方式:基于注解(@Scheduled)的简单定时器,基于接口SchedulingConfigurer实现的动态定时任务
代码目录结构配置文件application.yml内容#设置定时任务task: taskName1: #任务名称 switch: true #是否开启定时任务 cron: "0/5 * * * * ?" #任务表达式 taskName2: #任务名称 switch: true #是否开启定时任务 cron: "0/5 * * * * ?" #任务表达式启动类package com.example.schedule;import org.spring转载 2021-07-10 12:32:49 · 320 阅读 · 0 评论 -
Springboot 自定义注解+AOP实现修改参数的值
自定义注解package com.zkml.study.annotation;import java.lang.annotation.*;@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface CheckNullParams { }实现AOPpackage com.zkml.study.aop;.原创 2021-03-09 14:21:36 · 3990 阅读 · 1 评论 -
Springboot 自定义注解+AOP实现参数不能为空
自定义注解类package com.wing.my.cloud.system.modular.system.util.annotation;import java.lang.annotation.*;@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface CheckNullParams { String[].原创 2021-03-09 14:18:15 · 1787 阅读 · 1 评论 -
spring-boot-route 使用aop记录操作日志
日志记录表日志记录表主要包含几个字段,业务模块,操作类型,接口地址,处理状态,错误信息以及操作时间。数据库设计如下:CREATE TABLE `sys_oper_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志主键', `title` varchar(50) CHARACTER SET utf8 DEFAULT '' COMMENT '模块标题', `business_type` int(2) DEFAULT '..转载 2020-12-18 09:08:20 · 122 阅读 · 2 评论 -
springboot源码解析
springboot源码解析原创 2020-12-16 17:26:00 · 155 阅读 · 0 评论 -
Springboot全局时间格式化方式,提高开发效率利器
时间格式化在项目中使用频率是非常高的,当我们的 API 接口返回结果,需要对其中某一个 date 字段属性进行特殊的格式化处理,通常会用到 SimpleDateFormat 工具处理SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date stationTime = dateFormat.parse(dateFormat.format(PayEndTime()));可一旦处理的地方较多,不仅 CV 操作频繁,还产生很多原创 2020-12-14 14:06:09 · 133 阅读 · 0 评论 -
设计模式-工厂模式+策略模式
由于现如今都是使用spingboot框架,这么现在就是基于springboot来实现工厂模式+策略模式为了防止大量的if…else…或switch case代码的出现,可以使用策略模式+工厂模式进行优化。在我的项目当中,报表繁多,所以尝试了这种方式进行优化报表的架构。代码很简单,如下:工厂模式+策略模式-低配版Factory工厂类@Servicepublic class ReportFactory { /** * 初始化的时候将所有的ReportService自动加载原创 2020-12-02 15:31:42 · 342 阅读 · 2 评论 -
springboot集成mybatis自定义拦截器实现SQL拼接改写
这篇博文是项目中实战经验-代码片段原创 2020-12-01 14:19:12 · 1277 阅读 · 0 评论 -
分布式任务调度平台-XXL.Job原理
XXL-JOB快速入门分布式任务调度平台XXL-JOB搭建教程原创 2020-11-17 14:55:57 · 336 阅读 · 0 评论 -
SpringBoot集成ShedLock实现分布式定时锁
SpringBoot集成ShedLock实现分布式定时锁转载 2020-11-17 14:48:51 · 459 阅读 · 0 评论 -
SpringBoot整合easyexcel实现Excel的导出(包括复杂的导出)
首先大家需要了解easyExcel官网文档,否则接下来的API的应用都是很蒙蔽的alibaba-easyexcel官网文档API然后对照上面的api找到自己需要实现的业务,接下来给大家入门篇吧SpringBoot整合easyexcel实现Excel的导入、导出看到现在,大家应该对入门级应用熟悉了吧,那么就开始博主的正菜了,对于自定义模板的导出尤其还一些复杂的业务处理准备工作自定义模板这里我是拿我的一个业务来进行模拟哈,毕竟每个人遇到的业务都不尽相同自定义模板放在resources的原创 2020-11-17 14:20:11 · 5749 阅读 · 0 评论 -
SpringBoot实战-灵活的自定义自动配置
前言在我们开发的过程中,有时候为了让开发人员更好的进行业务逻辑开发,我们可能会定制开发一个个组件,并起开箱即用的效果。有玩过springboot的朋友可能知道,springboot提供了一系列的starter,这个starter很像就是可插拔的组件,它能够实现自动配置,达到开箱即用,很好的降低了使用框架时的复杂度,让开发人员更容易的使用。今天我们就演示一下如何通过自定义stater来实现一个简单的自动配置例子定义基于约定大于配置的原则,实现Spring组件自动装配的目的装配的依赖(方式).原创 2020-10-04 11:25:07 · 565 阅读 · 1 评论