
SpringBoot
文章平均质量分 50
springboot
Spirit_NKlaus
逆风的方向,更适合飞翔
展开
-
Springboot集成websocket实现消息推送
假设有个需求需要多个用户同时在对应的消息面板实时查看相关接口的执行流程进度,此时可以可考虑使用websocket来实现结果进度推送。二、编写WebSocket服务类,用户和客户端进行交互。三、编写controller模拟接口执行进度监控。四、使用在线websocket连接工具进行测试。一、编写WebSocket配置类。原创 2025-04-21 16:26:28 · 386 阅读 · 0 评论 -
Springboot实现JWT Token自动续期
想修改里面的内容,就必须签发一个新的JWT,那么如果我签发了一个Token他的过期时间是半小时,在这半小时中即使当前用户一直处于活跃状态,然而时间到了它仍然会失效,会需要我们重新登录,那么我们能不能在判断当前用户一直处于活跃状态的情况下去自动给当前用户的token刷新过期时间呢?这就是JWT Token的自动续期,下面我们结合redis来实现此方案,为了不频繁操作redis,只有当离过期时间只有10分钟时才更新过期时间。五,设计拦截器,拦截系统的http请求并判断token是否过期,或者需要自动续期。原创 2025-04-16 10:34:29 · 449 阅读 · 0 评论 -
Springboot使用@ConfigurationProperties读取嵌套配置
假设现在有个需求是需要做个系统的监控功能,我们需要有默认的监控参数,并且针对不同的子系统还可以定制化修改配置参数,在匹配到子系统时就是用子系统的参数,没匹配到就使用默认参数。springboot项目我们一般都是将配置信息维护到application.yml中,在代码中很多时候是通过@Value的方式去读取某些配置,如读取当前应用端口。原创 2025-04-10 17:10:10 · 238 阅读 · 0 评论 -
Springboot项目集成maven-assembly-plugin进行打包
通常我们将应用部署到服务器的某个目录下,一般情况下我们会提供像target(存放应用jar包),bin(项目启动/停止脚本),config(项目配置文件),logs(项目输出日志)之类的目录。 这个插件非常适合用于打包应用程序以便于发布或部署。它是 Apache Maven 中的一个插件,它允许你根据自定义的描述符文件(通常是 )来创建各种格式的归档文件(如 ZIP、JAR、TAR.GZ 等),可以轻松的将项目构建输出、依赖库、模块、站点文档以及其他指定的文件进行打包。1、修改项目结构添加assembly和原创 2025-03-19 20:59:16 · 402 阅读 · 0 评论 -
Springboot项目打包成war包
2、application.yml中不再需要配置上下文端口这些,简单配置个应用名。idea中配置好本地tomcat路径和端口信息。启动本地tomcat访问controller。最后添加修改build添加plugin。其次修改对tomcat依赖的使用。先编写一个controller。配置需要部署的war包和上下文。首先设置当前包打包为war。4、使用idea简单测试下。原创 2025-03-19 20:08:56 · 536 阅读 · 0 评论 -
Springboot简单实现日志链路追踪
在一些特殊场景下,可能一个请求的业务调用链会比较的长或者比较复杂(涉及多个服务或者异步调用等逻辑),而这个请求有可能触发的频率比较高,那么这个时候我们去看日志排查问题时就会发生混乱很难准确定位问题,这个时候我们可以考虑在一次请求中添加调用的链路id(TRACE_ID),这样可以完整的归集一次请求的所有日志打印,方便我们快速定位问题。5、修改下logback-spring.xml中的日志打印格式。1、添加日志拦截器给请求添加TRACE_ID。2、将日志拦截器加入到WebMvc中。3、编写线程Mdc工具类。原创 2024-12-27 10:53:00 · 542 阅读 · 0 评论 -
Springboot集成Ehcache3实现本地缓存
如果只需要在单个应用程序中使用本地缓存,则可以选择Ehcache;它支持内存和磁盘存储,这里不以注解方式演示,通过自己实现缓存管理者灵活控制缓存的读写;5、编写缓存管理者,来控制缓存的增删改查。6、编写controller进行简单测试。3、配置ehcache.xml文件。7、分别调用接口查看日志打印。4、编写缓存策略枚举。原创 2024-04-15 17:27:26 · 1456 阅读 · 1 评论 -
Springboot使用外部yml启动
有时候我们想更灵活的使用配置文件,例如同一套代码去部署多个客户,此时差异大的地方其实只是配置文件,这是我们希望每次启动项目从外部读取配置文件来加载项目,你可以使用一些配置中心来实现,当然也可以自己定义外部文件来实现。项目模拟外部文件读取。原创 2024-03-11 14:57:08 · 862 阅读 · 0 评论 -
Springboot实现缓存预热
很多时候我们代码中使用缓存时都是先判断缓存中没有数据我们再读取数据库而有则直接使用缓存数据,而在系统冷启动(当系统重启或新启动时,缓存是空的,这被称为冷启动)时,我们毫无意外都是直接获取数据库的内容,这时候缓存的命中率几乎为0,这时候我们需要考虑业务系统的缓存预热功能,在系统启动之前通过预先将常用数据加载到缓存中,以提高缓存命中率和系统性能的过程。缓存预热的目的是尽可能地避免缓存击穿和缓存雪崩。2、实现InitializingBean接口,并在afterPropertiesSet方法中执行缓存预热的逻辑。原创 2024-03-04 11:40:21 · 1004 阅读 · 0 评论 -
Springboot接口参数校验
在设计接口时我们通常需要对接口中的非法参数做校验,以降低在程序运行时因为一些非法参数而导致程序发生异常的风险,例如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。如果你的一个实体中的字段某一些是新增的时候必传,某一些修改时又不用传,那么对于不用传的字段肯定不需要校验的,这时候如果我们共用一个实体作为多个接口参数那肯定存在兼容问题,此时你就可以考虑将参数分组判断。接口的第一个参数是 自定义注解类型,第二个参数是 被注解字段的类。addUserV2接口。原创 2024-03-01 15:30:09 · 1181 阅读 · 0 评论 -
Springboot集成Druid实现监控功能
Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒杀一切。Druid可以很好的监控DB池连接和SQL的执行情况,天生就是针对监控而生的DB连接池。1、数据源页面:是当前DataSource配置的基本信息,上述配置的Filter可以在里面找到,如果没有配置Filter(一些信息会无法统计,例如“SQL监控”,会无法获取JDBC相关的SQL执行信息)。原创 2024-02-22 19:20:41 · 3508 阅读 · 0 评论 -
Springboot简单设计两级缓存
如果是分布式环境下,一级缓存之间也会存在一致性问题,当一个节点下的本地缓存修改后,需要通知其他节点也刷新本地缓存中的数据,否则会出现读取到过期数据的情况,这一问题可以通过类似于Redis中的发布/订阅功能解决。定义一个注解,用于添加在需要操作缓存的方法上,使用cacheName + key作为缓存的真正key,timeOut为可以设置的二级缓存Redis的过期时间,type是一个枚举类型的变量,表示操作缓存的类型。但是在设计中,还是要考虑一些问题的,例如数据一致性问题。在yml中配置redis的相关信息。原创 2024-01-31 20:28:12 · 1406 阅读 · 0 评论 -
Springboot集成jasypt实现配置文件加密
简单配置流程为配置文件加入秘钥配置项jasypt.encryptor.password(这里演示不使用这种方式,采用启动时-D参数注入,也可以放在配置中心等地方进行读取),并将需要加密的value值替换成预先经过加密的内容ENC(密文)。在springboot启动类上加上启动参数 -Djasypt.encryptor.password=qwer1997,添加方式和测试类一样 ,启动项目没有发生报错,调用查询接口查询一下数据,数据正常返回,说明集成成功。我们以单密钥对称加密方式为例简单演示一下。原创 2024-02-05 14:50:42 · 1119 阅读 · 0 评论 -
Springboot集成Javamelody监控
JavaMelody的目标是监视QA和生产环境中的Java或Java EE应用服务器。它不是模拟用户请求的工具,而是根据用户对应用程序的使用情况来衡量和计算应用程序实际操作的统计信息的工具。详细介绍请参考https://github.com/javamelody/javamelody/wiki/UserGuide。以方式二集成的结果为例,启动服务后访问http://localhost:8081/config/monitoring。方式二、使用javamelody原生的包。基于更有限的响应时间进行优化。原创 2024-01-31 11:54:46 · 1012 阅读 · 0 评论 -
Springboot常见跨域解决方案
当修饰方法时,表示此方法可以跨域,使用此方式只能实现局部跨域,当一个项目中存在多个类的话,使用此方式就会比较麻烦(需要给所有类上都添加此注解)。此方式是解决跨域问题最原始的方式,但它可以支持任意的 Spring Boot 版本(早期的 Spring Boot 版本也是支持的)。但此方式也是局部跨域,它应用的范围最小,设置的是方法级别的跨域。重写 ResponseBodyAdvice 接口中的 beforeBodyWrite(返回之前重写)方法,此实现方式也是全局跨域,它对整个项目中的所有接口有效。原创 2024-01-30 10:20:51 · 980 阅读 · 0 评论 -
Springboot优雅实现对接口返回统一封装
前端在调用后端接口时往往不同的接口返回的数据是不一样的,但是通常我们会与前端约定一个固定的返回格式,通过固定的格式告诉他们什么时候接口是返回成功,什么时候返回失败,返回成功后他们如何拿到接口返回的数据去渲染前端页面。所以我们需要定义一个统一的标准返回格式的。我们发现delete的方法返回的json格式没有格式化,我们只需要稍加改造一下delete方法就能正常返回格式化的数据。对于一些不想返回固定包装的方法可以在方法上加上@IgnoreAutoResponse注解即可返回原始的格式。原创 2023-12-20 15:21:32 · 2279 阅读 · 4 评论 -
Springboot整合Elasticsearch初体验
我使用的是springboot的2.3.5.RELEASE版本和Elasticsearch的7.6.0版本,这里贴出Elasticsearch的依赖,其它的依赖按照自己的需求自行添加。<!-- elasticsearch start --><dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-c原创 2021-02-09 21:02:53 · 280 阅读 · 0 评论 -
Springboot整合EasyExcel实现Excel导入导出
引入easyExcel依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version></dependency>EasyExcelUtil/** * EasyExcel工具类 * * @author: YuanXing on 2020/1.原创 2020-12-23 20:46:00 · 1670 阅读 · 1 评论 -
SpringBoot使用freemarker动态生成word文档
最近做项目有个需求,在动态生成word文档的同时插入电子签名图片,这里使用freemarker来实现。首先引入freemarker依赖:<!-- freemarker --><dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version><原创 2020-06-10 11:20:49 · 999 阅读 · 0 评论 -
SpringBoot对SpringMvc的自动装配
面试中很容易被问到SpringBoot对SpringMvc的自动装配这个问题,最近看了一些资料,自己稍微总结了一下SpringBoot对SpringMvc做了很多集成,也就是自动装配,下面来浅读一下WebMvcAutoConfiguration这个配置类1,视图解析器的ContentNegotiatingViewResolver作用是根据方法的返回值决定是转发还是重定向,存在一个视图解析器的集...原创 2020-04-27 17:48:53 · 554 阅读 · 0 评论 -
Springboot整合Easy Excel自定义导出模板
我是用的springboot,基本jar包不多说,加入Easy Excel的jar包<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</ver...原创 2020-03-28 10:28:46 · 3921 阅读 · 0 评论 -
Springboot整合RabbitMQ发邮件
分享一下在springboot中整合rabbitmq来发送邮件,这一玩也是完了两小时,一步一个坑。。。关于rabbitmq的介绍就不说,先引入依赖<!-- 邮件 依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b...原创 2020-04-16 17:20:16 · 1161 阅读 · 0 评论 -
Springboot全局异常处理从配置文件中读取自定义异常信息
自定义异常的教程社区上有很多,今天抽空研究了一下把自定义的异常信息写到配置文件中,自我感觉这样便于使用与维护,下面简单分享一下1,springboot常用的pom依赖就不列出来了,这里我加了一个依赖 <!-- commons组件读取配置文件相关依赖 --> <dependency> <groupId>commons-configuration...原创 2019-12-31 16:31:59 · 1346 阅读 · 0 评论 -
SpringBoot中使用拦截器
1,定义拦截器类 implements HandlerInterceptorpublic class MyInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response,...原创 2018-08-25 15:35:34 · 489 阅读 · 0 评论 -
SpringBoot添加Swagger配置
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法/参数/模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。1,先在pom.xml文件里面加入依赖<!--配置swagger-->...原创 2018-08-23 10:47:55 · 1543 阅读 · 0 评论 -
SpringBoot @Bean
1,定义bean@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名下面是@Configuration里的一个例子@Configurationpublic class AppConfig { @Bean public TransferService transferSe...转载 2018-08-20 11:47:42 · 13194 阅读 · 1 评论 -
SpringBoot单元,集成测试
1、在pom包中添加spring-boot-starter-test包引用<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope&g...转载 2018-08-18 20:52:47 · 371 阅读 · 0 评论