From ef46844bfdb9de3bd0a1758592856125c5898446 Mon Sep 17 00:00:00 2001 From: zhangjf Date: Fri, 20 Feb 2026 17:53:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=85=8D=E7=BD=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 所有业务服务添加scanBasePackages扫描fund-common - Gateway添加ReactiveRedisConfig提供ReactiveRedisTemplate - Gateway排除Servlet相关类和RedisService(需要非响应式RedisTemplate) - 解决Bean名称冲突(ReactiveRedisConfig) --- .../com/fundplatform/exp/ExpApplication.java | 2 +- .../fundplatform/file/FileApplication.java | 2 +- .../gateway/GatewayApplication.java | 12 ++++- .../gateway/config/ReactiveRedisConfig.java | 44 +++++++++++++++++++ .../receipt/ReceiptApplication.java | 2 +- .../com/fundplatform/req/ReqApplication.java | 2 +- .../com/fundplatform/sys/SysApplication.java | 2 +- 7 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 fund-gateway/src/main/java/com/fundplatform/gateway/config/ReactiveRedisConfig.java diff --git a/fund-exp/src/main/java/com/fundplatform/exp/ExpApplication.java b/fund-exp/src/main/java/com/fundplatform/exp/ExpApplication.java index 5a4080a..782a2da 100644 --- a/fund-exp/src/main/java/com/fundplatform/exp/ExpApplication.java +++ b/fund-exp/src/main/java/com/fundplatform/exp/ExpApplication.java @@ -4,7 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.fundplatform.exp", "com.fundplatform.common"}) @EnableDiscoveryClient public class ExpApplication { diff --git a/fund-file/src/main/java/com/fundplatform/file/FileApplication.java b/fund-file/src/main/java/com/fundplatform/file/FileApplication.java index a7e7262..97cdc44 100644 --- a/fund-file/src/main/java/com/fundplatform/file/FileApplication.java +++ b/fund-file/src/main/java/com/fundplatform/file/FileApplication.java @@ -4,7 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.fundplatform.file", "com.fundplatform.common"}) @EnableDiscoveryClient public class FileApplication { diff --git a/fund-gateway/src/main/java/com/fundplatform/gateway/GatewayApplication.java b/fund-gateway/src/main/java/com/fundplatform/gateway/GatewayApplication.java index 9f1ae3d..f30e720 100644 --- a/fund-gateway/src/main/java/com/fundplatform/gateway/GatewayApplication.java +++ b/fund-gateway/src/main/java/com/fundplatform/gateway/GatewayApplication.java @@ -2,8 +2,18 @@ package com.fundplatform.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = { + "com.fundplatform.gateway", + "com.fundplatform.common.auth", // TokenInfo + "com.fundplatform.common.context", // TraceContextHolder + "com.fundplatform.common.exception", // GlobalExceptionHandler + "com.fundplatform.common.result" // Result class + // 注意:不扫描 common.cache (需要RedisTemplate,Gateway只有ReactiveRedisTemplate) + // 注意:不扫描 common.web (使用Servlet API,Gateway是WebFlux) +}) +@EnableDiscoveryClient public class GatewayApplication { public static void main(String[] args) { diff --git a/fund-gateway/src/main/java/com/fundplatform/gateway/config/ReactiveRedisConfig.java b/fund-gateway/src/main/java/com/fundplatform/gateway/config/ReactiveRedisConfig.java new file mode 100644 index 0000000..b42ad20 --- /dev/null +++ b/fund-gateway/src/main/java/com/fundplatform/gateway/config/ReactiveRedisConfig.java @@ -0,0 +1,44 @@ +package com.fundplatform.gateway.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory; +import org.springframework.data.redis.core.ReactiveRedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * Redis配置类 + * 为Gateway提供ReactiveRedisTemplate + */ +@Configuration +public class ReactiveRedisConfig { + + @Bean + public ReactiveRedisTemplate reactiveRedisTemplate( + ReactiveRedisConnectionFactory connectionFactory) { + + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, + ObjectMapper.DefaultTyping.NON_FINAL); + + Jackson2JsonRedisSerializer jsonSerializer = new Jackson2JsonRedisSerializer<>(objectMapper, Object.class); + StringRedisSerializer stringSerializer = StringRedisSerializer.UTF_8; + + RedisSerializationContext serializationContext = RedisSerializationContext + .newSerializationContext() + .key(stringSerializer) + .value(jsonSerializer) + .hashKey(stringSerializer) + .hashValue(jsonSerializer) + .build(); + + return new ReactiveRedisTemplate<>(connectionFactory, serializationContext); + } +} diff --git a/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java b/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java index 03ce855..3019103 100644 --- a/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java +++ b/fund-receipt/src/main/java/com/fundplatform/receipt/ReceiptApplication.java @@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.scheduling.annotation.EnableScheduling; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.fundplatform.receipt", "com.fundplatform.common"}) @EnableDiscoveryClient @EnableScheduling public class ReceiptApplication { diff --git a/fund-req/src/main/java/com/fundplatform/req/ReqApplication.java b/fund-req/src/main/java/com/fundplatform/req/ReqApplication.java index 7ae26e7..17fafcf 100644 --- a/fund-req/src/main/java/com/fundplatform/req/ReqApplication.java +++ b/fund-req/src/main/java/com/fundplatform/req/ReqApplication.java @@ -4,7 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.fundplatform.req", "com.fundplatform.common"}) @EnableDiscoveryClient public class ReqApplication { diff --git a/fund-sys/src/main/java/com/fundplatform/sys/SysApplication.java b/fund-sys/src/main/java/com/fundplatform/sys/SysApplication.java index 5e18dfb..9f13d03 100644 --- a/fund-sys/src/main/java/com/fundplatform/sys/SysApplication.java +++ b/fund-sys/src/main/java/com/fundplatform/sys/SysApplication.java @@ -8,7 +8,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * 系统服务启动类 */ -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"com.fundplatform.sys", "com.fundplatform.common"}) @EnableDiscoveryClient @MapperScan("com.fundplatform.sys.data.mapper") public class SysApplication {