背景 前段时间,一个同事小姐姐跟我说她的项目起不来了,让我帮忙看一下,本着助人为乐的精神,这个忙肯定要去帮。 于是,我在她的控制台发现了如下的异常信息: Exception in thread "main" org.springframework.beans.factory.BeanCurrentl […]
背景 前段时间,一个同事小姐姐跟我说她的项目起不来了,让我帮忙看一下,本着助人为乐的精神,这个忙肯定要去帮。 于是,我在她的控制台发现了如下的异常信息: Exception in thread "main" org.springframework.beans.factory.BeanCurrentl […]
Timer和ScheduledExecutorService是JDK内置的定时任务方案,而业内还有一个经典的定时任务的设计叫时间轮(Timing Wheel), Netty内部基于时间轮实现了一个HashedWheelTimer来优化百万量级I/O超时的检测,它是一个高性能,低消耗的数据结构,它适合用非准实时,延迟的短 […]
@Resource和@Autowired这两个注解的作用都是在Spring生态里面去实现Bean的依赖注入。 下面分别说一下@Autowired和@Resource这两个注解。 闪现 [@Autowired的作用详解 ] 几个字。 首先,@Autowired是Spring里面提供的一个注解,默认是根据类型来实现Bean […]
背景 我们使用RocketMQ时,一般Consumer启动都是使用的@PostConstruct注解。(@PostConstruct:用于在执行任何初始化时执行依赖注入后需要执行的方法。),或者使用bean的方式配置。 配置如下: 生产者配置 在配置类中配置所有生产者,在业务中注入使用,将生产者的启动和销毁绑定到 Be […]
依赖 GraphQL相关依赖如下(SpringBoot2.X): <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId […]
背景 目前常用的实现动态配置日志级别的应该非SpringBoot的spring-boot-starter-actuator莫属了。 不过通过spring-boot-starter-actuator配置的日志级别,服务一旦重启就会恢复原状。且只能通过访问指定的接口来修改单个实例的日志级别(SpringBootAdmin也 […]
发现问题 线上服务重启,好在抓到了线上服务的dump文件,下载到本地进行分析。 使用MAT打开快照文件,此处省略掉使用MAT的过程,分析发现有大量的com.netflix.servo.monitor.BasicTimer未释放,且被org.springframework.cloud.netflix.metrics.se […]
在如今的关系型数据库中,有两个开源产品是你必须知道的。其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的。而今天我们将介绍另外一个开源关系型数据库:PostgreSQL,以及在Spring Boot中如何使用。 PostgreSQL […]
Spring Boot 2.5.0 发布:支持Java16、Gradle 7、Datasource初始化机制调整。 这次就简单说下重新设计的spring.sql.init 配置有啥用。 先来看看这次被弃用部分的内容(位于org.springframework.boot.autoconfigure.jdbc.DataSo […]
Spring Boot中提供了一系列的注解比如@ImportAutoConfiguration和@EnableAutoConfiguration,它们最终都组合了@Import注解,那么,它们之间有什么区别呢? @ImportAutoConfiguration是否可以替代@Import注解?@ImportAutoCon […]
引入SpringBoot本来就支持REST服务,因此在SpringBoot项目之间经常需要通过REST的形式来相互调用。本文以具体的实例带大家了解一下SpringBoot中怎么使用RestTemplate进行接口调用。同时,会讲解部分相关源码。 RestTemplate的实例化 RestTemplate实例通常需要自己 […]
最近项目中使用SpringBoot集成Redis,踩到了一个坑:从Redis中获取数据为null,但实际上Redis中是存在对应的数据的。是什么原因导致此坑的呢? 本文就带大家从SpringBoot集成Redis、所踩的坑以及自动配置源码分析来学习一下SpringBoot中如何正确的使用Redis。 SpringBoo […]
@Autowired和@Resource都可以用于来实现依赖注入,但前者是Spring提供的,后者为JDK(JSR-250标准)自带的。阿里Java开发规范中推荐使用@Resource。但大多数人往往并没有留意为何如此,甚至代码中的提示信息可能都没留意去看。 本文就带大家彻底了解一下这两个注解的功能、运用场景及区别。 […]
游标查询(scroll)简介 scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。 游标查询会取某个时间点的快照数据。 查询初始化之后索引上的任何变化会被它忽略。 它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引 视图 一样。 启用游标查 […]
背景 作为网关,有些时候可能报文的结构并不符合前端或者某些服务的需求,或者因为某些原因,其他服务修改报文结构特别麻烦、或者需要修改的地方特别多,这个时候就需要走网关单独转换一次。 实现 话不多说,直接上代码。 首先,我们定义好配置: package com.lifengdi.gateway.properties.ent […]
黄沙百战穿金甲,不破楼兰终不还。