mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 12:39:05 +08:00
feat(deps): 升级 Spring Boot 4.1.0 并迁移 Redis 监听到 @RedisListener
- spring-boot.version 4.0.6 -> 4.1.0 - 共享容器 Bean 改名为 redisMessageListenerContainer,适配 Boot 4.1 按名称回退的自动配置 - ClientDetailsInitRunner/DynamicRouteInitRunner 移除 InitializingBean 手工注册,改用 @RedisListener - WxMpInitConfigRunner 移除自定义 redisContainer Bean,改用 @RedisListener - 注意:需配合 Nacos 共享配置关闭 spring.cloud.compatibility-verifier(SC 2025.1.1 官方仅声明兼容 Boot 4.0.x)
This commit is contained in:
1 parent
bdeba4ce3d
commit
74fb06e3ea
5 files changed
+27
-46
No files matched your search
+7
-1
@@ -15,9 +15,15 @@ import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class RedisMessageConfiguration {
|
||||
|
||||
/**
|
||||
* 共享 Redis 消息监听容器
|
||||
* <p>
|
||||
* Bean 名称必须为 redisMessageListenerContainer(Spring Data Redis 默认容器名): 1. Boot 4.1 的
|
||||
* @RedisListener 自动配置按该名称回退,避免重复创建容器 2. @RedisListener 端点默认挂载到该名称的容器
|
||||
*/
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory) {
|
||||
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
|
||||
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
|
||||
container.setConnectionFactory(redisConnectionFactory);
|
||||
return container;
|
||||
|
||||
+7
-13
@@ -8,13 +8,11 @@ import com.pig4cloud.pigx.common.data.cache.RedisUtils;
|
||||
import com.pig4cloud.pigx.common.data.tenant.TenantBroker;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.data.redis.listener.ChannelTopic;
|
||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||
import org.springframework.data.redis.annotation.RedisListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.event.TransactionalEventListener;
|
||||
@@ -29,12 +27,10 @@ import org.springframework.transaction.event.TransactionalEventListener;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@SuppressWarnings("all")
|
||||
public class ClientDetailsInitRunner implements InitializingBean {
|
||||
public class ClientDetailsInitRunner {
|
||||
|
||||
private final SysOauthClientDetailsService clientDetailsService;
|
||||
|
||||
private final RedisMessageListenerContainer listenerContainer;
|
||||
|
||||
private final SysTenantService tenantService;
|
||||
|
||||
/**
|
||||
@@ -83,14 +79,12 @@ public class ClientDetailsInitRunner implements InitializingBean {
|
||||
}
|
||||
|
||||
/**
|
||||
* redis 监听配置,监听 upms_redis_client_reload_topic,重新加载Redis
|
||||
* redis 监听配置,监听 upms_redis_client_reload_topic,重新加载客户端配置
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
listenerContainer.addMessageListener((message, bytes) -> {
|
||||
log.warn("接收到重新Redis 重新加载客户端配置事件");
|
||||
initClientDetails();
|
||||
}, new ChannelTopic(CacheConstants.CLIENT_REDIS_RELOAD_TOPIC));
|
||||
@RedisListener(topic = CacheConstants.CLIENT_REDIS_RELOAD_TOPIC)
|
||||
public void onClientReload(String message) {
|
||||
log.warn("接收到 Redis 重新加载客户端配置事件");
|
||||
initClientDetails();
|
||||
}
|
||||
|
||||
}
|
||||
+7
-13
@@ -25,7 +25,6 @@ import com.pig4cloud.pigx.common.gateway.support.DynamicRouteInitEvent;
|
||||
import com.pig4cloud.pigx.common.gateway.vo.RouteDefinitionVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.cloud.client.ConditionalOnDiscoveryEnabled;
|
||||
import org.springframework.cloud.gateway.filter.FilterDefinition;
|
||||
@@ -33,10 +32,9 @@ import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.data.redis.annotation.RedisListener;
|
||||
import org.springframework.data.redis.core.HashOperations;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.listener.ChannelTopic;
|
||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.transaction.event.TransactionalEventListener;
|
||||
|
||||
@@ -54,14 +52,12 @@ import java.util.Map;
|
||||
@RequiredArgsConstructor
|
||||
@ConditionalOnDiscoveryEnabled
|
||||
@SuppressWarnings("removal")
|
||||
public class DynamicRouteInitRunner implements InitializingBean {
|
||||
public class DynamicRouteInitRunner {
|
||||
|
||||
private final RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
private final SysRouteConfService routeConfService;
|
||||
|
||||
private final RedisMessageListenerContainer listenerContainer;
|
||||
|
||||
/**
|
||||
* ApplicationReadyEvent 使用 TransactionalEventListener 时启动时无法获取到事件
|
||||
*/
|
||||
@@ -105,14 +101,12 @@ public class DynamicRouteInitRunner implements InitializingBean {
|
||||
}
|
||||
|
||||
/**
|
||||
* redis 监听配置,监听 upms_redis_route_reload_topic,重新加载Redis
|
||||
* redis 监听配置,监听 upms_redis_route_reload_topic,重新加载路由
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
listenerContainer.addMessageListener((message, bytes) -> {
|
||||
log.warn("接收到重新Redis 重新加载路由事件");
|
||||
initRoute();
|
||||
}, new ChannelTopic(CacheConstants.ROUTE_REDIS_RELOAD_TOPIC));
|
||||
@RedisListener(topic = CacheConstants.ROUTE_REDIS_RELOAD_TOPIC)
|
||||
public void onRouteReload(String message) {
|
||||
log.warn("接收到 Redis 重新加载路由事件");
|
||||
initRoute();
|
||||
}
|
||||
|
||||
}
|
||||
+5
-18
@@ -15,13 +15,10 @@ import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
||||
import me.chanjar.weixin.mp.constant.WxMpEventConstants;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.listener.ChannelTopic;
|
||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||
import org.springframework.data.redis.annotation.RedisListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -283,23 +280,13 @@ public class WxMpInitConfigRunner {
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置 Redis 消息监听容器
|
||||
* <p>
|
||||
* 监听 mp_redis_reload_topic 频道,当收到消息时重新加载公众号配置
|
||||
* 适用场景:后台修改公众号配置后,通过发布 Redis 消息触发配置热更新
|
||||
*
|
||||
* @param redisConnectionFactory Redis 连接工厂
|
||||
* @return Redis 消息监听容器
|
||||
*/
|
||||
@Bean
|
||||
public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory) {
|
||||
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
|
||||
container.setConnectionFactory(redisConnectionFactory);
|
||||
container.addMessageListener((message, bytes) -> {
|
||||
log.warn("接收到重新加载公众号配置事件");
|
||||
initServices();
|
||||
}, new ChannelTopic(CacheConstants.MP_REDIS_RELOAD_TOPIC));
|
||||
return container;
|
||||
@RedisListener(topic = CacheConstants.MP_REDIS_RELOAD_TOPIC)
|
||||
public void onMpConfigReload(String message) {
|
||||
log.warn("接收到重新加载公众号配置事件");
|
||||
initServices();
|
||||
}
|
||||
|
||||
public static Map<String, Long> getTenants() {
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
</organization>
|
||||
|
||||
<properties>
|
||||
<spring-boot.version>4.0.6</spring-boot.version>
|
||||
<spring-boot.version>4.1.0</spring-boot.version>
|
||||
<spring-cloud.version>2025.1.1</spring-cloud.version>
|
||||
<spring-cloud-alibaba.version>2025.1.0.0</spring-cloud-alibaba.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
||||
Reference in new issue
Block a user