diff --git a/pom.xml b/pom.xml
index c2d8a88..b684415 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,6 +14,7 @@
pulsar-admin-common
pulsar-admin-jdk
pulsar-admin-reactive
+ spring
@@ -30,6 +31,8 @@
1.18.34
10.18.0
1.1.22
+ 6.0.19
+ 3.1.11
1.18.20.0
0.8.12
diff --git a/spring/pom.xml b/spring/pom.xml
new file mode 100644
index 0000000..fb603d4
--- /dev/null
+++ b/spring/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+
+ io.github.protocol-laboratory
+ pulsar-admin-parent
+ 0.1.0
+
+
+ pulsar-spring-parent
+ pom
+
+ pulsar-spring
+ pulsar-spring-boot-starter
+ pulsar-spring-boot-starter-reactor
+
+
+
diff --git a/spring/pulsar-spring-boot-starter-reactor/pom.xml b/spring/pulsar-spring-boot-starter-reactor/pom.xml
new file mode 100644
index 0000000..f7f9d24
--- /dev/null
+++ b/spring/pulsar-spring-boot-starter-reactor/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+ io.github.protocol-laboratory
+ pulsar-spring-parent
+ 0.1.0
+
+
+ pulsar-spring-boot-starter-reactor
+
+
+
+ io.github.protocol-laboratory
+ pulsar-admin-reactive
+ ${project.version}
+
+
+ io.github.protocol-laboratory
+ pulsar-spring-boot-starter
+ ${project.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
+
+
+
diff --git a/spring/pulsar-spring-boot-starter-reactor/src/main/java/io/github/protocol/pulsar/spring/config/package-info.java b/spring/pulsar-spring-boot-starter-reactor/src/main/java/io/github/protocol/pulsar/spring/config/package-info.java
new file mode 100644
index 0000000..ea86d13
--- /dev/null
+++ b/spring/pulsar-spring-boot-starter-reactor/src/main/java/io/github/protocol/pulsar/spring/config/package-info.java
@@ -0,0 +1 @@
+package io.github.protocol.pulsar.spring.config;
diff --git a/spring/pulsar-spring-boot-starter/pom.xml b/spring/pulsar-spring-boot-starter/pom.xml
new file mode 100644
index 0000000..fc7af1f
--- /dev/null
+++ b/spring/pulsar-spring-boot-starter/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+ io.github.protocol-laboratory
+ pulsar-spring-parent
+ 0.1.0
+
+
+ pulsar-spring-boot-starter
+
+
+
+ io.github.protocol-laboratory
+ pulsar-spring
+ ${project.version}
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ ${spring-boot.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring-boot.version}
+ test
+
+
+
+
diff --git a/spring/pulsar-spring-boot-starter/src/main/java/io/github/protocol/pulsar/spring/config/package-info.java b/spring/pulsar-spring-boot-starter/src/main/java/io/github/protocol/pulsar/spring/config/package-info.java
new file mode 100644
index 0000000..ea86d13
--- /dev/null
+++ b/spring/pulsar-spring-boot-starter/src/main/java/io/github/protocol/pulsar/spring/config/package-info.java
@@ -0,0 +1 @@
+package io.github.protocol.pulsar.spring.config;
diff --git a/spring/pulsar-spring/pom.xml b/spring/pulsar-spring/pom.xml
new file mode 100644
index 0000000..7257ca8
--- /dev/null
+++ b/spring/pulsar-spring/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ io.github.protocol-laboratory
+ pulsar-spring-parent
+ 0.1.0
+
+
+ pulsar-spring
+
+
+
+ io.github.protocol-laboratory
+ pulsar-admin-jdk
+ ${project.version}
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+
+
+ org.springframework.boot
+ spring-boot
+ ${spring-boot.version}
+
+
+
+
diff --git a/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/NewNamespace.java b/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/NewNamespace.java
new file mode 100644
index 0000000..a93e3b5
--- /dev/null
+++ b/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/NewNamespace.java
@@ -0,0 +1,4 @@
+package io.github.protocol.pulsar.spring;
+
+public record NewNamespace(String tenant, String namespace) {
+}
diff --git a/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/NewTenant.java b/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/NewTenant.java
new file mode 100644
index 0000000..301fe33
--- /dev/null
+++ b/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/NewTenant.java
@@ -0,0 +1,4 @@
+package io.github.protocol.pulsar.spring;
+
+public record NewTenant(String tenant) {
+}
diff --git a/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/package-info.java b/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/package-info.java
new file mode 100644
index 0000000..087f2e1
--- /dev/null
+++ b/spring/pulsar-spring/src/main/java/io/github/protocol/pulsar/spring/package-info.java
@@ -0,0 +1 @@
+package io.github.protocol.pulsar.spring;