From 625d09c856f16c1d4cc864302f65cd58d6745703 Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 1 Jul 2026 08:36:07 +0800 Subject: [PATCH] refactor: remove implicit memory session store --- .../Gb32960IngestAppCompositionTest.java | 3 ++- .../jt808app/Jt808IngestAppCompositionTest.java | 3 ++- .../config/SessionCoreAutoConfiguration.java | 13 ++++++------- .../config/SessionCoreAutoConfigurationTest.java | 16 +++++++++++++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppCompositionTest.java b/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppCompositionTest.java index 821f30c6..8f122c60 100644 --- a/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppCompositionTest.java +++ b/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppCompositionTest.java @@ -6,6 +6,7 @@ import com.lingniu.ingest.identity.config.VehicleIdentityAutoConfiguration; import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; import com.lingniu.ingest.protocol.gb32960.config.Gb32960AutoConfiguration; import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer; +import com.lingniu.ingest.session.InMemorySessionStore; import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration; import com.lingniu.ingest.sink.archive.ArchiveStore; import com.lingniu.ingest.sink.archive.RawArchiveEventSink; @@ -35,13 +36,13 @@ class Gb32960IngestAppCompositionTest { Gb32960AutoConfiguration.class)) .withAllowBeanDefinitionOverriding(true) .withBean("kafkaProducer", KafkaProducer.class, Gb32960IngestAppCompositionTest::kafkaProducer) + .withBean(InMemorySessionStore.class, InMemorySessionStore::new) .withPropertyValues( "lingniu.ingest.gb32960.enabled=true", "lingniu.ingest.gb32960.server.enabled=true", "lingniu.ingest.gb32960.port=0", "lingniu.ingest.identity.store=mysql", "lingniu.ingest.identity.mysql.initialize-schema=false", - "lingniu.ingest.session.store=memory", "lingniu.ingest.sink.mq.enabled=true", "lingniu.ingest.sink.mq.type=kafka", "lingniu.ingest.sink.mq.bootstrap-servers=localhost:9092", diff --git a/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppCompositionTest.java b/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppCompositionTest.java index c3fada79..4e5935b4 100644 --- a/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppCompositionTest.java +++ b/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppCompositionTest.java @@ -6,6 +6,7 @@ import com.lingniu.ingest.identity.config.VehicleIdentityAutoConfiguration; import com.lingniu.ingest.protocol.jt808.codec.Jt808MessageDecoder; import com.lingniu.ingest.protocol.jt808.config.Jt808AutoConfiguration; import com.lingniu.ingest.protocol.jt808.inbound.Jt808NettyServer; +import com.lingniu.ingest.session.InMemorySessionStore; import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration; import com.lingniu.ingest.sink.archive.ArchiveStore; import com.lingniu.ingest.sink.archive.RawArchiveEventSink; @@ -35,12 +36,12 @@ class Jt808IngestAppCompositionTest { Jt808AutoConfiguration.class)) .withAllowBeanDefinitionOverriding(true) .withBean("kafkaProducer", KafkaProducer.class, Jt808IngestAppCompositionTest::kafkaProducer) + .withBean(InMemorySessionStore.class, InMemorySessionStore::new) .withPropertyValues( "lingniu.ingest.jt808.enabled=true", "lingniu.ingest.jt808.port=0", "lingniu.ingest.identity.store=mysql", "lingniu.ingest.identity.mysql.initialize-schema=false", - "lingniu.ingest.session.store=memory", "lingniu.ingest.sink.mq.enabled=true", "lingniu.ingest.sink.mq.type=kafka", "lingniu.ingest.sink.mq.bootstrap-servers=localhost:9092", diff --git a/modules/core/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java b/modules/core/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java index 71224cc2..07c80b79 100644 --- a/modules/core/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java +++ b/modules/core/session-core/src/main/java/com/lingniu/ingest/session/config/SessionCoreAutoConfiguration.java @@ -1,7 +1,6 @@ package com.lingniu.ingest.session.config; import com.lingniu.ingest.session.CommandDispatcher; -import com.lingniu.ingest.session.InMemorySessionStore; import com.lingniu.ingest.session.NoopCommandDispatcher; import com.lingniu.ingest.session.RedisSessionStore; import com.lingniu.ingest.session.SessionProperties; @@ -18,6 +17,12 @@ import org.springframework.data.redis.core.StringRedisTemplate; @EnableConfigurationProperties(SessionProperties.class) public class SessionCoreAutoConfiguration { + @Bean + @ConditionalOnProperty(prefix = "lingniu.ingest.session", name = "store", havingValue = "memory") + public Object rejectedLegacyMemorySessionStore() { + throw new IllegalStateException("session.store=memory has been removed; configure session.store=redis"); + } + @Bean @ConditionalOnBean(StringRedisTemplate.class) @ConditionalOnProperty(prefix = "lingniu.ingest.session", name = "store", havingValue = "redis") @@ -27,12 +32,6 @@ public class SessionCoreAutoConfiguration { return new RedisSessionStore(redis, properties.getTtl()); } - @Bean - @ConditionalOnMissingBean - public SessionStore sessionStore() { - return new InMemorySessionStore(); - } - @Bean @ConditionalOnMissingBean public CommandDispatcher commandDispatcher() { diff --git a/modules/core/session-core/src/test/java/com/lingniu/ingest/session/config/SessionCoreAutoConfigurationTest.java b/modules/core/session-core/src/test/java/com/lingniu/ingest/session/config/SessionCoreAutoConfigurationTest.java index a713a835..c94d6893 100644 --- a/modules/core/session-core/src/test/java/com/lingniu/ingest/session/config/SessionCoreAutoConfigurationTest.java +++ b/modules/core/session-core/src/test/java/com/lingniu/ingest/session/config/SessionCoreAutoConfigurationTest.java @@ -17,10 +17,10 @@ class SessionCoreAutoConfigurationTest { .withConfiguration(AutoConfigurations.of(SessionCoreAutoConfiguration.class)); @Test - void usesInMemorySessionStoreByDefault() { + void doesNotCreateImplicitInMemorySessionStoreByDefault() { contextRunner.run(context -> { - assertThat(context).hasSingleBean(SessionStore.class); - assertThat(context).hasSingleBean(InMemorySessionStore.class); + assertThat(context).doesNotHaveBean(SessionStore.class); + assertThat(context).doesNotHaveBean(InMemorySessionStore.class); }); } @@ -36,4 +36,14 @@ class SessionCoreAutoConfigurationTest { assertThat(context).hasSingleBean(RedisSessionStore.class); }); } + + @Test + void rejectsLegacyMemorySessionStoreMode() { + contextRunner + .withPropertyValues("lingniu.ingest.session.store=memory") + .run(context -> assertThat(context.getStartupFailure()) + .hasRootCauseInstanceOf(IllegalStateException.class) + .hasMessageContaining("session.store=memory has been removed") + .hasMessageContaining("session.store=redis")); + } }