SpringBoot2启示录
文章平均质量分 79
大狼狗启示录,与SpringBoot2、SpringCloud2相关的,例如eureka/zuul/jpa/mybatis plus/feign/websocket/jms/poi/redis/udp等等。
Moshow郑锴
Powered by Core iMoshow
展开
-
SpringBoot3+Jasypt如何在配置文件中对数据库的密码进行加密以防止密码泄露
在 Spring Boot 3 中,可以通过`jasypt-spring-boot-starter`对配置文件中的数据库密码或者其他重要密码进行加密,操作非常简单,可以有效地保护 Spring Boot 应用程序中的敏感信息。选择适合你的应用场景的加密策略,确保密码等敏感数据的安全。请注意保存好你的encryptionKey和password。原创 2024-11-23 00:29:52 · 364 阅读 · 0 评论 -
SpringBoot3与JUnit5集成测试
你可以在 Spring Boot 3 中轻松设置和运行 JUnit 集成测试。合理使用 Spring 提供的注解和工具,可以确保测试的高效性和可靠性。原创 2024-11-23 00:20:29 · 350 阅读 · 0 评论 -
SpringBoot中设置超时30分钟自动删除元素的List和Map
在 Spring Boot 中,你可以使用多种方法来实现自动删除超时元素的 List 或 Map。如果你需要简单的功能并且不介意引入外部依赖,可以选择 Guava Cache。如果你想要更灵活的控制,使用 Spring 的调度功能也是一个不错的选择。原创 2024-11-21 00:18:37 · 763 阅读 · 0 评论 -
MybatisPlus使用P6SY打印SQL日志
p6spy是一个针对数据库访问进行拦截和记录的工具,它通过代理JDBC驱动程序来工作。这意味着你的应用程序可以像往常一样使用JDBC,而p6spy会在幕后记录所有的SQL语句及其执行时间。这对于开发和调试过程中的SQL优化非常有用。p6spy慢SQL检测:通过配置和p6spy可以记录执行时间超过设定阈值的SQL语句。自定义日志格式:通过,你可以自定义SQL日志的输出格式,包括时间戳、执行时间、SQL语句等。日志输出控制appender配置项允许你选择日志输出到控制台、文件或日志系统。p6spy。原创 2024-11-11 23:06:56 · 435 阅读 · 0 评论 -
在SpringBoot3中启用HTTP2
启用HTTP2可以带来更高效的数据传输、更优的性能表现以及更好的用户体验。:HTTP2采用二进制格式传输数据,而非HTTP1.x的文本格式,这使得协议解析更高效,且便于扩展。:HTTP2对消息头采用HPACK进行压缩传输,能够节省消息头占用的网络流量,而HTTP1.x每次请求都会携带大量冗余头信息,浪费了带宽资源。:HTTP2支持在单个TCP连接上并行执行多个请求,而HTTP1.x中的Pipelining存在头阻塞问题,即后面的请求需要等待前面的请求完成才能执行。原创 2024-11-11 22:53:35 · 532 阅读 · 0 评论 -
使用JMeter进行Spring Boot接口的压力测试
使用 JMeter 进行压力测试的主要步骤包括安装 JMeter、创建测试计划、配置 HTTP 请求、添加监听器和运行测试。您可以根据需要调整线程数和其他参数,以模拟不同的负载情况。获得的结果将帮助您分析应用性能。t=O83AJMeter 官方网站https://jmeter.apache.org/download_jmeter.cgi。原创 2024-10-19 01:07:52 · 1074 阅读 · 0 评论 -
Spring Boot实现接口限流
在 Spring Boot 中,可以通过多种方式实现接口限流。原创 2024-10-19 00:58:31 · 1396 阅读 · 0 评论 -
SLF4J(W): Class path contains multiple SLF4J providers.
最近在给某AI项目集成阿里的通义千问SDK,发现竟然有个奇怪的报错,仔细一看发现,我类上用的lombok的@Slf4j注释,阿里用的是org.slf4j.simple.SimpleServiceProvider,但是lombok用的是LogbackServiceProvider,所以就有冲突了,需要解决一下。我的思路是exclude 阿里的sdk包的org.slf4j.simple.SimpleServiceProvider。原创 2024-10-03 22:33:53 · 585 阅读 · 2 评论 -
SpringBoot3+Druid YAML配置
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。现在已经SpringBoot3,Druid的配置也需要随着更新。原创 2024-09-29 19:30:52 · 1393 阅读 · 0 评论 -
SpringBoot3脚手架
SpringBoot3脚手架,基于SpringBoot3+Druid+PgSQL+MyBatisPlus3+FastJSON2+Lombok,启动web容器为Undertow(非默认tomcat),其他的请自行添加和配置。原创 2024-09-29 15:24:16 · 1477 阅读 · 0 评论 -
IDEA:Properties in parent definition are prohibited
如果你在POM.xml中使用了自定义版本,那么IDEA就没办法很动态检测(其实可以做到的,不是吗),就会有一个的错误信息(禁止使用父级定义中的属性),而fix option是让你把版本号set在inline模式,也就是直接写到对应libraries那边。两种方案其实都有优缺点,但是这个红色的报错确实让人忍无可忍。于是你需要设置一下。原创 2024-09-29 14:37:57 · 725 阅读 · 0 评论 -
HttpMediaTypeNotAcceptableException: No acceptable representation问题解决方法
@RestController会在返回结果时直接返回对象,再由Spring将对象转为json,如果结果对象没有get方法,就会报以上错误。又或者@RequestBody的对象中没有可用的方法,没有@Data注解导致没有Getter方法可用。原创 2024-09-15 23:52:50 · 920 阅读 · 0 评论 -
MyBatis Plus报错:Invalid value type for attribute ‘factoryBeanObjectType‘
如果你用SpringBoot3+并且用MybatisPlus3+,遇到以下错误,恭喜你有救了!因为升级为spring boot3后,MyBatis Plus的依赖要更换为mybatis-plus-spring-boot3-starter。原创 2024-09-15 21:54:46 · 664 阅读 · 0 评论 -
SpringBoot 最大连接数及最大并发数是多少
Spring Boot 是一个基于 Spring 框架的快速开发框架,它本身并不直接管理数据库连接或网络连接的最大连接数和最大并发数。这些参数通常由底层的基础设施和组件来控制,例如数据库连接池,例如Web容器连接设置,操作系统底层或者防火墙等INFRA配置。原创 2024-07-21 22:23:07 · 1532 阅读 · 0 评论 -
SpringBoot的SmartLifecycle生命周期接口
在SpringBoot的应用中,我们通常会利用@PostConstruct和@PreDestroy注解,然而还有更好用的SmartLifecycle 。Spring Boot 的 SmartLifecycle 是 Spring 框架中的一种生命周期接口,它扩展了 Lifecycle 接口。Lifecycle 接口允许你控制一个组件的生命周期,例如启动和停止。而 SmartLifecycle 接口则在此基础上提供了更智能的控制,它能够处理多个 SmartLifecycle 实例的自动排序和依赖管理。原创 2024-07-07 23:28:56 · 1435 阅读 · 0 评论 -
SpringBoot使用Spark的DataFrame API
Apache Spark是一个开源的分布式计算系统,它提供了一个快速和通用的集群计算平台。Spark 能够处理大规模数据,支持多种编程语言,如Scala、Java和Python,并且具有多种高级功能,包括SQL查询、机器学习、图处理和实时数据流处理。Spark是一个功能强大且灵活的计算平台,适用于各种大数据处理场景。通过其丰富的API和组件,Spark能够满足从批处理到实时处理、从数据处理到机器学习的多种需求。原创 2024-06-30 01:49:55 · 1257 阅读 · 0 评论 -
spring-boot-starter-json配置对象属性为空不显示
在Spring Boot中使用spring-boot-starter-json(通常是通过jackson实现的)时,如果你希望在序列化对象时,如果某个属性为空,则不显示该属性,你可以使用@JsonInclude注解来实现这一点。原创 2024-06-27 23:48:58 · 1452 阅读 · 2 评论 -
SpringBoot脚手架MySpringBootAPI(PgSQL+Druid+MyBatisPlus+Lombok)
SpringBoot脚手架《MySpringBootAPI》,基于SpringBoot+Druid+PgSQL+MyBatisPlus+FastJSON+Lombok,其他的请自行添加和配置。原创 2024-06-27 23:24:00 · 1288 阅读 · 0 评论 -
Lambok用法之@onX@Delegate@Cleanup@Singular@Builder@With
例如onConstructor,oMethod, 和onParam允许你在生成的代码中注入自定义的注解。一个常见的用例是结合 Spring 的@Autowired。@Delegate可以让你的类使用其他类的方法,而不需要自己写代码。@Cleanup可以自动管理输入输出流等各种需要释放的资源,确保安全地调用close方法。@Builder让你的类支持链式构造,而@Singular让集合类型字段可以更方便的维护。@With允许你创建一个新的对象,该对象是当前对象的副本,但某些字段的值已被更改。原创 2024-05-12 23:48:22 · 1044 阅读 · 0 评论 -
FastJson2中FastJsonHttpMessageConverter找不到类问题
如果你最近也在升级FastJson到FastJson2版本,而跟我一样也遇到了FastJsonHttpMessageConverter找不到类问题以及FastJsonConfig找不到问题,那么恭喜你,看完本文,安装完fastjson2、fastjson2-extension、fastjson2-extension-spring6这三个类库,你就可以成功使用新版FastJson2了。原创 2024-04-21 08:00:00 · 1954 阅读 · 0 评论 -
JAVA在线代码生成器 | 2024.04.20| 修复CDN问题+推出JDK8/11分支+修复大写下划线转驼峰问题
基于SpringBoot2和Freemarker的代码生成平台,以解放双手为目的,减少大量的重复CRUD,支持MySQL、Oracle、PgSQL主流数据库,可通过建表SQL语句或INSERT语句或者简单JSON生成预设的JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL/CommonMapper相关模板代码. 感谢大家的使用和反馈,1500的PV和获得超过1.9k的星星是我前进和继续做下去的动力。| https://java.bejson.com/generator原创 2024-04-20 17:57:54 · 1341 阅读 · 0 评论 -
Java SpringBoot中优雅地判断一个对象是否为空
Java SpringBoot中优雅地判断一个对象是否为空。原创 2024-04-02 23:59:10 · 1565 阅读 · 0 评论 -
SpringBoot+Redis实现分布式WebSocket
在分布式系统架构中实现WebSocket的通信机制,它允许在不同的服务器节点之间共享和同步WebSocket会话状态,从而实现跨多个服务器的实时消息传递。会话共享:在分布式系统中,用户的WebSocket连接可能与不同的服务器建立,这就要求系统能够在不同服务器间共享WebSocket会话信息,以便消息能够被正确地传递到所有相关的客户端。负载均衡:使用负载均衡可以提高系统的可用性和伸缩性。原创 2024-03-19 01:06:30 · 4165 阅读 · 1 评论 -
如何实现接口重试
在复杂的接口业务中,API请求数量很多,并且业务处理复杂,便难免会遇到一些网络问题(timeout)或者未知错误(error),这时候需要加入重试机制了。让我们来回顾一下都有什么实现机制吧。包含循环重试/递归重试/Spring Retry(Retry Template)......等8种重试机制。。。当然在请求重试的时候,我们也要注意一些关键点,以免因为重试,引发更多的问题:原创 2024-01-13 22:42:44 · 1374 阅读 · 0 评论 -
Freemarker实现Html全站静态化
在大型网站中,比如主流电商商品页,访问者看到的页面基本上是静态页面。为什么都要把页面静态化呢?其实把页面静态化,好处有很多。例如:访问速度快,更有利于搜索引擎收录等。目前主流的静态化主要有两种:1、纯静态方式:将动态页面抓取并保存为静态页面,页面实际存在于服务器的硬盘中。2、伪静态方式:通过WEB服务器的 URL Rewrite 把外部请求的静态地址转化为实际的动态页面地址,页面本质上是动态页面,静态页面是不存在的。原创 2024-01-06 20:09:31 · 1677 阅读 · 0 评论 -
Spring for Apache Kafka Deep Dive – Part 1: Error Handling, Message Conversion and Transaction Suppo
Spring for Apache Kafka brings the familiar Spring programming model to Kafka. It provides theKafkaTemplatefor publishing records and a listener container for asynchronous execution of POJO listeners. Spring Boot auto-configuration wires up much of the i原创 2023-12-31 13:29:43 · 1033 阅读 · 0 评论 -
Spring for Apache Kafka Deep Dive – Part 2: Apache Kafka and Spring Cloud Stream
We will cover the following in this post:Overview of Spring Cloud Stream and its programming modelApache Kafka®integration in Spring Cloud StreamHow Spring Cloud Stream makes application development easier for Kafka developersStream processing using原创 2023-12-31 13:27:38 · 1036 阅读 · 0 评论 -
MyBatis Plus 大数据量查询优化
如果没有流式查询,我们想要从数据库取 100w 条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。当查询百万级的数据的时候,还可以使用游标方式进行数据查询处理,不仅可以节省内存的消耗,而且还不需要一次性取出所有数据,可以进行逐条处理或逐条取出部分批量处理。默认情况下,完整的检索结果集会将其存储在内存中。分库分表场景下,单个表的查询结果集虽然不大,但如果某个查询跨了多个库多个表,又要做结果集的合并、排序等动作,依然有可能撑爆内存;原创 2023-12-16 22:48:12 · 1859 阅读 · 0 评论 -
Redis分页+多条件模糊查询组合实现思路
Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊条件查询,在面对一些需要分页、排序以及条件查询的场景时(如评论,时间线,检索等),只凭借Redis所提供的功能就不太好不处理了。而对于命中的集合,我们将更新其过期时间。虽然上文实现了多条件模糊查询+分页的功能,但是在时间开发中,我们不能无限制的生成新的集合,因为匹配串是很多样化的,这会给缓存带来巨大的压力。原创 2023-10-04 22:15:18 · 846 阅读 · 1 评论 -
Java/ExecutorService中多线程服务ExecuteService的使用
ExecutorService 是 Java 中的一个接口,它扩展了 Executor 接口,并提供了更多的方法来处理多线程任务。它是 Java 中用于执行多线程任务的框架之一,可以创建一个线程池,将多个任务提交到线程池中执行。ExecutorService 接口提供了许多方法,如 shutdown()、shutdownNow()、submit()、execute()、invokeAll() 等,可以更方便地提交任务、执行任务、关闭线程池等操作。原创 2023-09-14 23:51:21 · 2983 阅读 · 0 评论 -
SpringBoot中的可扩展接口
ApplicationContextAware:用来获取ApplicationContext的一个扩展类,ApplicationContext应该是很多人非常熟悉的一个类了,就是spring上下文管理器,可以手动的获取任何在spring上下文注册的bean,我们经常扩展这个接口来缓存spring上下文,包装成静态方法。InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。原创 2023-08-15 21:54:13 · 936 阅读 · 0 评论 -
Spring Cloud Feign+Ribbon的超时机制
在一个项目中(数据产品),需要对接企业微信中第三方应用。在使用 Feign 的去调用微服务的用户模块用微信的 code 获取 access_token 以及用户工厂信息时出现 Feign 重试超时报错的情况,通过此篇文章记录问题解决的过程。原创 2023-08-03 21:35:56 · 407 阅读 · 0 评论 -
SpringBoot整合Caffeine
缓存(Cache)在代码世界中无处不在。从底层的CPU多级缓存,到客户端的页面缓存,处处都存在着缓存的身影。缓存从本质上来说,是一种空间换时间的手段,通过对数据进行一定的空间安排,使得下次进行数据访问时起到加速的效果。就Java而言,其常用的缓存解决方案有很多,例如数据库缓存框架EhCache,分布式缓存Memcached等,这些缓存方案实际上都是为了提升吞吐效率,避免持久层压力过大。原创 2023-08-03 21:28:14 · 866 阅读 · 0 评论 -
IDEA(java: 错误: 不支持发行版本 5)
今天在IDEA中运行项目时,突然蹦出error:java:不支持发行版本5报错,原因是项目运行的时候,jdk版本与本地的版本不一致,我的本地jdk版本是11,但是项目默认成了5,所以不一致,建议根据自己使用的JDK修改对应的版本,获取更好的JAVA特性支持。原创 2023-07-11 00:32:51 · 2873 阅读 · 0 评论 -
java: 程序包javax.servlet.http不存在
当项目从2.7.x的springboot升级到3.0.x的时候,会遇到一个“java: 程序包javax.servlet.http不存在”问题,通过引入正确的新包可以解决。新版的话已经叫Jakarta Servlet,Oracle捐给了自Eclipse基金会。原创 2023-06-24 15:57:26 · 9096 阅读 · 0 评论 -
pgsql timestamp without time zone > character varying解决方案
最近给一个项目从中去,mysql中的日期大于小于等于操作符可以直接对string生效,会进行自动转换,但是在pgsql下不行,并且会触发,项目是springboot2+mybatisplus框架,该任务由定时任务执行。解决方案如果你没有用hutool,那么使用 ,格式一般为"2022-10-01 00:00:00";如果你有用hutool,那么可以使用,建议根据实际发生的业务以及针对系统所设置的日期格式对日期类型的String做处理。原创 2022-10-22 20:28:00 · 13792 阅读 · 7 评论 -
Requested bean is currently in creation: Is there an unresolvable circular reference?
升级到springboot2.6之后,提示Error creating bean with name 'webSecurityConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?报错。原创 2022-04-10 22:00:53 · 6300 阅读 · 0 评论 -
HashMap精选问答
关于HashMapHashMap是使用频率最高的映射(键值对)数据类型。JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。Map四大实现类:知多DHashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果原创 2022-03-15 23:17:48 · 676 阅读 · 1 评论 -
简单的JVM调优
GC垃圾回收器JDK1.8 使用默认参数的java应用使用的GC组合是Parallel Scavenge (新生代) 和 Parallel Old (老年代)新生代(别名)老年代JVM 参数Serial (DefNew)Serial Old(PSOldGen)-XX:+UseSerialGCParallel Scavenge (PSYoungGen)Serial Old(PSOldGen)-XX:+UseParallelGCParallel Scavenge (PSYoungGen)Parallel原创 2022-03-08 00:35:32 · 444 阅读 · 0 评论 -
JVM调优之Java诊断神器Arthas(在线监控jvm,在线修改代码)
`Arthas 是Alibaba开源的Java诊断工具`,深受开发者喜爱 1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! ......原创 2022-03-08 00:16:28 · 935 阅读 · 0 评论
分享