From 4180b300ea6c8ae16f0a978ba4b1a46024718aae Mon Sep 17 00:00:00 2001 From: kano07 Date: Mon, 23 Mar 2026 14:37:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20SPI=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 问题:common 模块包名缺少 'com.kama' 前缀,导致 SPI 配置文件路径不匹配 - 解决:选择代码修改量较小的方案,直接修改 SPI 配置文件路径和内容:移除com.kama前缀。 - 测试:添加 SPI 加载测试类 --- .../com/kama/test/serializer/SpiTest.java | 31 +++++++++++++++++++ ....common.serializer.myserializer.Serializer | 5 --- .../common.serializer.myserializer.Serializer | 5 +++ .../com/kama/test/serializer/SpiTest.java | 31 +++++++++++++++++++ ....common.serializer.myserializer.Serializer | 5 --- .../common.serializer.myserializer.Serializer | 5 +++ 6 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java delete mode 100644 version5/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer create mode 100644 version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer create mode 100644 version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java delete mode 100644 version6/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer create mode 100644 version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer diff --git a/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java b/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java new file mode 100644 index 0000000..5f8b885 --- /dev/null +++ b/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java @@ -0,0 +1,31 @@ +package com.kama.test.serializer; + +import common.serializer.myserializer.*; +import common.spi.SpiLoader; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +/** + * @ClassName SpiTest + * @Description spi测试 + * @Author Kano07 + * @LastChangeDate 2026-3-23 14:02 + * @Version v5.0 + */ +public class SpiTest { + @Test + public void testSpi() { + SpiLoader.loadSpi(Serializer.class); + Serializer serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "kryo"); + assertTrue("SPI 获取的实例应该是 KryoSerializer 类型", serializer instanceof KryoSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "protobuf"); + assertTrue("SPI 获取的实例应该是 ProtostuffSerializer 类型", serializer instanceof ProtostuffSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "json"); + assertTrue("SPI 获取的实例应该是 JsonSerializer 类型", serializer instanceof JsonSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "Hessian"); + assertTrue("SPI 获取的实例应该是 HessianSerializer 类型", serializer instanceof HessianSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "jdk"); + assertTrue("SPI 获取的实例应该是 ObjectSerializer 类型", serializer instanceof ObjectSerializer); + } +} diff --git a/version5/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer b/version5/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer deleted file mode 100644 index 90c3187..0000000 --- a/version5/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer +++ /dev/null @@ -1,5 +0,0 @@ -Hessian=com.kama.common.serializer.myserializer.HessianSerializer -protobuf=com.kama.common.serializer.myserializer.ProtobufSerializer -json=com.kama.common.serializer.myserializer.JsonSerializer -kryo=com.kama.common.serializer.myserializer.KryoSerializer -jdk=com.kama.common.serializer.myserializer.ObjectSerializer diff --git a/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer b/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer new file mode 100644 index 0000000..18fb920 --- /dev/null +++ b/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer @@ -0,0 +1,5 @@ +Hessian=common.serializer.myserializer.HessianSerializer +protobuf=common.serializer.myserializer.ProtostuffSerializer +json=common.serializer.myserializer.JsonSerializer +kryo=common.serializer.myserializer.KryoSerializer +jdk=common.serializer.myserializer.ObjectSerializer diff --git a/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java b/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java new file mode 100644 index 0000000..51e61df --- /dev/null +++ b/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java @@ -0,0 +1,31 @@ +package com.kama.test.serializer; + +import common.serializer.myserializer.*; +import common.spi.SpiLoader; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +/** + * @ClassName SpiTest + * @Description spi测试 + * @Author Kano07 + * @LastChangeDate 2026-3-23 14:02 + * @Version v6.0 + */ +public class SpiTest { + @Test + public void testSpi() { + SpiLoader.loadSpi(Serializer.class); + Serializer serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "kryo"); + assertTrue("SPI 获取的实例应该是 KryoSerializer 类型", serializer instanceof KryoSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "protobuf"); + assertTrue("SPI 获取的实例应该是 ProtostuffSerializer 类型", serializer instanceof ProtostuffSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "json"); + assertTrue("SPI 获取的实例应该是 JsonSerializer 类型", serializer instanceof JsonSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "Hessian"); + assertTrue("SPI 获取的实例应该是 HessianSerializer 类型", serializer instanceof HessianSerializer); + serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "jdk"); + assertTrue("SPI 获取的实例应该是 ObjectSerializer 类型", serializer instanceof ObjectSerializer); + } +} diff --git a/version6/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer b/version6/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer deleted file mode 100644 index 90c3187..0000000 --- a/version6/krpc-core/src/main/resources/META-INF/serializer/com.kama.common.serializer.myserializer.Serializer +++ /dev/null @@ -1,5 +0,0 @@ -Hessian=com.kama.common.serializer.myserializer.HessianSerializer -protobuf=com.kama.common.serializer.myserializer.ProtobufSerializer -json=com.kama.common.serializer.myserializer.JsonSerializer -kryo=com.kama.common.serializer.myserializer.KryoSerializer -jdk=com.kama.common.serializer.myserializer.ObjectSerializer diff --git a/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer b/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer new file mode 100644 index 0000000..18fb920 --- /dev/null +++ b/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer @@ -0,0 +1,5 @@ +Hessian=common.serializer.myserializer.HessianSerializer +protobuf=common.serializer.myserializer.ProtostuffSerializer +json=common.serializer.myserializer.JsonSerializer +kryo=common.serializer.myserializer.KryoSerializer +jdk=common.serializer.myserializer.ObjectSerializer From f18f9439e5757f6ac75a49e85175572bbe8887b2 Mon Sep 17 00:00:00 2001 From: kano07 Date: Mon, 23 Mar 2026 14:52:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E6=A0=B9=E6=8D=AEreview=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95=E7=B1=BB=E5=86=97?= =?UTF-8?q?=E4=BD=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/kama/test/serializer/SpiTest.java | 10 +++++----- .../common.serializer.myserializer.Serializer | 2 +- .../main/java/com/kama/test/serializer/SpiTest.java | 10 +++++----- .../common.serializer.myserializer.Serializer | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java b/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java index 5f8b885..c0cd3a9 100644 --- a/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java +++ b/version5/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java @@ -17,15 +17,15 @@ public class SpiTest { @Test public void testSpi() { SpiLoader.loadSpi(Serializer.class); - Serializer serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "kryo"); + Serializer serializer = SpiLoader.getInstance(Serializer.class, "kryo"); assertTrue("SPI 获取的实例应该是 KryoSerializer 类型", serializer instanceof KryoSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "protobuf"); + serializer = SpiLoader.getInstance(Serializer.class, "protobuf"); assertTrue("SPI 获取的实例应该是 ProtostuffSerializer 类型", serializer instanceof ProtostuffSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "json"); + serializer = SpiLoader.getInstance(Serializer.class, "json"); assertTrue("SPI 获取的实例应该是 JsonSerializer 类型", serializer instanceof JsonSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "Hessian"); + serializer = SpiLoader.getInstance(Serializer.class, "hessian"); assertTrue("SPI 获取的实例应该是 HessianSerializer 类型", serializer instanceof HessianSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "jdk"); + serializer = SpiLoader.getInstance(Serializer.class, "jdk"); assertTrue("SPI 获取的实例应该是 ObjectSerializer 类型", serializer instanceof ObjectSerializer); } } diff --git a/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer b/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer index 18fb920..7ba9e8f 100644 --- a/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer +++ b/version5/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer @@ -1,4 +1,4 @@ -Hessian=common.serializer.myserializer.HessianSerializer +hessian=common.serializer.myserializer.HessianSerializer protobuf=common.serializer.myserializer.ProtostuffSerializer json=common.serializer.myserializer.JsonSerializer kryo=common.serializer.myserializer.KryoSerializer diff --git a/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java b/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java index 51e61df..9b3ddfe 100644 --- a/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java +++ b/version6/krpc-core/src/main/java/com/kama/test/serializer/SpiTest.java @@ -17,15 +17,15 @@ public class SpiTest { @Test public void testSpi() { SpiLoader.loadSpi(Serializer.class); - Serializer serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "kryo"); + Serializer serializer = SpiLoader.getInstance(Serializer.class, "kryo"); assertTrue("SPI 获取的实例应该是 KryoSerializer 类型", serializer instanceof KryoSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "protobuf"); + serializer = SpiLoader.getInstance(Serializer.class, "protobuf"); assertTrue("SPI 获取的实例应该是 ProtostuffSerializer 类型", serializer instanceof ProtostuffSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "json"); + serializer = SpiLoader.getInstance(Serializer.class, "json"); assertTrue("SPI 获取的实例应该是 JsonSerializer 类型", serializer instanceof JsonSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "Hessian"); + serializer = SpiLoader.getInstance(Serializer.class, "hessian"); assertTrue("SPI 获取的实例应该是 HessianSerializer 类型", serializer instanceof HessianSerializer); - serializer = (Serializer) SpiLoader.getInstance(Serializer.class, "jdk"); + serializer = SpiLoader.getInstance(Serializer.class, "jdk"); assertTrue("SPI 获取的实例应该是 ObjectSerializer 类型", serializer instanceof ObjectSerializer); } } diff --git a/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer b/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer index 18fb920..7ba9e8f 100644 --- a/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer +++ b/version6/krpc-core/src/main/resources/META-INF/serializer/common.serializer.myserializer.Serializer @@ -1,4 +1,4 @@ -Hessian=common.serializer.myserializer.HessianSerializer +hessian=common.serializer.myserializer.HessianSerializer protobuf=common.serializer.myserializer.ProtostuffSerializer json=common.serializer.myserializer.JsonSerializer kryo=common.serializer.myserializer.KryoSerializer