diff --git a/eventmesh-dashboard-console/pom.xml b/eventmesh-dashboard-console/pom.xml
index 0ffc18d..9013082 100644
--- a/eventmesh-dashboard-console/pom.xml
+++ b/eventmesh-dashboard-console/pom.xml
@@ -19,11 +19,27 @@
     </properties>
 
     <dependencies>
+        <!-- EventMesh Dashboard modules -->
+        <dependency>
+            <groupId>org.apache.eventmesh.dashboard.common</groupId>
+            <artifactId>eventmesh-dashboard-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.eventmesh.dashboard.service</groupId>
+            <artifactId>eventmesh-dashboard-service</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.eventmesh.dashboard.core</groupId>
+            <artifactId>eventmesh-dashboard-core</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
         <!-- AOP -->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-aspects</artifactId>
-            <version>5.1.2.RELEASE</version>
         </dependency>
 
         <!-- Swagger -->
@@ -38,18 +54,6 @@
             <version>1.7.0</version>
         </dependency>
 
-        <!-- EventMesh Dashboard modules -->
-        <dependency>
-            <groupId>org.apache.eventmesh.dashboard.common</groupId>
-            <artifactId>eventmesh-dashboard-common</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.eventmesh.dashboard.service</groupId>
-            <artifactId>eventmesh-dashboard-service</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-        </dependency>
-
         <!-- Database -->
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
index 117dd06..4472036 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/EventMeshDashboardApplication.java
@@ -24,14 +24,14 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@SpringBootApplication
+@SpringBootApplication(scanBasePackages = {"org.apache.eventmesh.dashboard.console", "org.apache.eventmesh.dashboard.core"})
 @EnableTransactionManagement
 public class EventMeshDashboardApplication {
 
     public static void main(String[] args) {
         try {
             SpringApplication.run(EventMeshDashboardApplication.class, args);
-            log.info("{} Successfully booted.", EventMeshDashboardApplication.class.getSimpleName());
+            log.info("{} Boot Successful!", EventMeshDashboardApplication.class.getSimpleName());
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
index cfd7e39..847a24a 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/ConnectionController.java
@@ -17,7 +17,7 @@
 
 package org.apache.eventmesh.dashboard.console.controller;
 
-import org.apache.eventmesh.dashboard.service.meta.ConnectionService;
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -31,7 +31,7 @@
 public class ConnectionController {
 
     @Autowired
-    ConnectionService connectionService;
+    ConnectionCore connectionCore;
 
     /**
      * Query Connection List
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
index c2b96a7..026a524 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/SubscriptionController.java
@@ -19,7 +19,7 @@
 
 import org.apache.eventmesh.dashboard.common.dto.Result;
 import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
-import org.apache.eventmesh.dashboard.service.meta.SubscriptionService;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
 
 import java.util.List;
 
@@ -34,7 +34,7 @@
 public class SubscriptionController {
 
     @Autowired
-    SubscriptionService subscriptionService;
+    SubscriptionCore subscriptionCore;
 
     // the subscription dataId naming pattern of EventMesh clients: ip-protocol
     private static final String CLIENT_DATA_ID_PATTERN = "*.*.*.*-*";
@@ -48,7 +48,7 @@
      */
     @GetMapping("/subscription")
     public Result<String> retrieveSubscription(@RequestParam("dataId") String dataId, @RequestParam("group") String group) {
-        return Result.success(subscriptionService.retrieveConfig(dataId, group));
+        return Result.success(subscriptionCore.retrieveConfig(dataId, group));
     }
 
     /**
@@ -66,7 +66,7 @@
         @RequestParam(name = "size", defaultValue = "10") Integer size,
         @RequestParam(name = "dataId", defaultValue = CLIENT_DATA_ID_PATTERN) String dataId,
         @RequestParam(name = "group", defaultValue = "") String group) {
-        return Result.success(subscriptionService.retrieveConfigs(page, size, dataId, group));
+        return Result.success(subscriptionCore.retrieveConfigs(page, size, dataId, group));
     }
 
 }
diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
index 6110861..a005d46 100644
--- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
+++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/TopicController.java
@@ -21,7 +21,7 @@
 import org.apache.eventmesh.dashboard.common.model.TopicProperties;
 import org.apache.eventmesh.dashboard.console.dto.CreateTopicRequest;
 import org.apache.eventmesh.dashboard.console.dto.DeleteTopicRequest;
-import org.apache.eventmesh.dashboard.service.store.TopicService;
+import org.apache.eventmesh.dashboard.service.store.TopicCore;
 
 import java.util.List;
 
@@ -41,7 +41,7 @@
 public class TopicController {
 
     @Autowired
-    TopicService topicService;
+    TopicCore topicCore;
 
     /**
      * TODO Is OPTIONS method and @CrossOrigin necessary?
@@ -60,7 +60,7 @@
     @CrossOrigin
     @GetMapping
     public Result<List<TopicProperties>> getList() {
-        List<TopicProperties> topicList = topicService.getTopic();
+        List<TopicProperties> topicList = topicCore.getTopic();
         return Result.success(topicList);
     }
 
@@ -68,7 +68,7 @@
     @PostMapping
     public Result<Object> create(@RequestBody CreateTopicRequest createTopicRequest) {
         String topicName = createTopicRequest.getName();
-        topicService.createTopic(topicName);
+        topicCore.createTopic(topicName);
         return Result.success();
     }
 
@@ -76,7 +76,7 @@
     @DeleteMapping
     public Result<Object> delete(@RequestBody DeleteTopicRequest deleteTopicRequest) {
         String topicName = deleteTopicRequest.getName();
-        topicService.deleteTopic(topicName);
+        topicCore.deleteTopic(topicName);
         return Result.success();
     }
 }
\ No newline at end of file
diff --git a/eventmesh-dashboard-console/src/main/resources/application-dev.yml b/eventmesh-dashboard-console/src/main/resources/application-dev.yml
index d411315..3074e0c 100644
--- a/eventmesh-dashboard-console/src/main/resources/application-dev.yml
+++ b/eventmesh-dashboard-console/src/main/resources/application-dev.yml
@@ -31,8 +31,8 @@
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       url: jdbc:mysql://localhost:3306/eventmesh_dashboard?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
-      username: ${DB_USERNAME}
-      password: ${DB_PASSWORD}
+      username: ${DB_USERNAME:root}
+      password: ${DB_PASSWORD:password}
 
       initial-size: 1
       max-active: 50
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
index 44d376a..03193f1 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/config/BeanTypeConfig.java
@@ -18,14 +18,14 @@
 package org.apache.eventmesh.dashboard.core.config;
 
 import org.apache.eventmesh.dashboard.common.constant.ConfigConst;
-import org.apache.eventmesh.dashboard.core.meta.EtcdConnectionService;
-import org.apache.eventmesh.dashboard.core.meta.EtcdSubscriptionService;
-import org.apache.eventmesh.dashboard.core.meta.NacosConnectionService;
-import org.apache.eventmesh.dashboard.core.meta.NacosSubscriptionService;
-import org.apache.eventmesh.dashboard.core.store.RocketmqTopicService;
-import org.apache.eventmesh.dashboard.service.meta.ConnectionService;
-import org.apache.eventmesh.dashboard.service.meta.SubscriptionService;
-import org.apache.eventmesh.dashboard.service.store.TopicService;
+import org.apache.eventmesh.dashboard.core.meta.EtcdConnectionCore;
+import org.apache.eventmesh.dashboard.core.meta.EtcdSubscriptionCore;
+import org.apache.eventmesh.dashboard.core.meta.NacosConnectionCore;
+import org.apache.eventmesh.dashboard.core.meta.NacosSubscriptionCore;
+import org.apache.eventmesh.dashboard.core.store.RocketmqTopicCore;
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
+import org.apache.eventmesh.dashboard.service.store.TopicCore;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -46,36 +46,36 @@
     }
 
     @Bean
-    public ConnectionService connectionService() {
+    public ConnectionCore connectionCore() {
         switch (adminProperties.getMeta().getType()) {
             case ConfigConst.META_TYPE_NACOS:
-                return new NacosConnectionService(adminProperties);
+                return new NacosConnectionCore(adminProperties);
             case ConfigConst.META_TYPE_ETCD:
-                return new EtcdConnectionService();
+                return new EtcdConnectionCore();
             default:
                 throw new IllegalArgumentException("Unsupported EventMesh Meta type: " + adminProperties.getMeta().getType());
         }
     }
 
     @Bean
-    public SubscriptionService subscriptionService() {
+    public SubscriptionCore subscriptionCore() {
         switch (adminProperties.getMeta().getType()) {
             case ConfigConst.META_TYPE_NACOS:
-                return new NacosSubscriptionService(adminProperties);
+                return new NacosSubscriptionCore(adminProperties);
             case ConfigConst.META_TYPE_ETCD:
-                return new EtcdSubscriptionService();
+                return new EtcdSubscriptionCore();
             default:
                 throw new IllegalArgumentException("Unsupported EventMesh Meta type: " + adminProperties.getMeta().getType());
         }
     }
 
     @Bean
-    public TopicService topicService() {
+    public TopicCore topicCore() {
         switch (adminProperties.getStore().getType()) {
             case ConfigConst.STORE_TYPE_STANDALONE:
                 return null; // TODO StandaloneTopicService
             case ConfigConst.STORE_TYPE_ROCKETMQ:
-                return new RocketmqTopicService(adminProperties);
+                return new RocketmqTopicCore(adminProperties);
             case ConfigConst.STORE_TYPE_KAFKA:
                 return null; // TODO KafkaTopicService
             default:
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
similarity index 87%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
index 76a7752..65f836b 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdConnectionCore.java
@@ -17,7 +17,7 @@
 
 package org.apache.eventmesh.dashboard.core.meta;
 
-import org.apache.eventmesh.dashboard.service.meta.ConnectionService;
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
 import org.springframework.stereotype.Service;
 
@@ -25,6 +25,6 @@
 
 @Slf4j
 @Service
-public class EtcdConnectionService implements ConnectionService {
+public class EtcdConnectionCore implements ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionCore.java
similarity index 90%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionCore.java
index 0db282b..7fdd957 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/EtcdSubscriptionCore.java
@@ -19,7 +19,7 @@
 
 import org.apache.eventmesh.dashboard.common.dto.Result;
 import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
-import org.apache.eventmesh.dashboard.service.meta.SubscriptionService;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
 
 import java.util.List;
 
@@ -29,7 +29,7 @@
 
 @Slf4j
 @Service
-public class EtcdSubscriptionService implements SubscriptionService {
+public class EtcdSubscriptionCore implements SubscriptionCore {
 
     @Override
     public String retrieveConfig(String dataId, String group) {
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionCore.java
similarity index 83%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionCore.java
index ef1f26f..a9e62ad 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosConnectionCore.java
@@ -18,7 +18,7 @@
 package org.apache.eventmesh.dashboard.core.meta;
 
 import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.service.meta.ConnectionService;
+import org.apache.eventmesh.dashboard.service.meta.ConnectionCore;
 
 import org.springframework.stereotype.Service;
 
@@ -26,9 +26,9 @@
 
 @Slf4j
 @Service
-public class NacosConnectionService implements ConnectionService {
+public class NacosConnectionCore implements ConnectionCore {
 
-    public NacosConnectionService(AdminProperties adminProperties) {
+    public NacosConnectionCore(AdminProperties adminProperties) {
     }
 
 }
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionCore.java
similarity index 97%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionCore.java
index 8c2349d..d4436e0 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/meta/NacosSubscriptionCore.java
@@ -30,7 +30,7 @@
 import org.apache.eventmesh.dashboard.common.exception.MetaException;
 import org.apache.eventmesh.dashboard.common.model.SubscriptionInfo;
 import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.service.meta.SubscriptionService;
+import org.apache.eventmesh.dashboard.service.meta.SubscriptionCore;
 
 import java.util.ArrayList;
 import java.util.Base64;
@@ -58,7 +58,7 @@
 
 @Slf4j
 @Service
-public class NacosSubscriptionService implements SubscriptionService {
+public class NacosSubscriptionCore implements SubscriptionCore {
 
     AdminProperties adminProperties;
 
@@ -68,7 +68,7 @@
 
     private static String HTTP_PREFIX = ConfigConst.HTTP_PREFIX;
 
-    public NacosSubscriptionService(AdminProperties adminProperties) {
+    public NacosSubscriptionCore(AdminProperties adminProperties) {
         this.adminProperties = adminProperties;
 
         nacosProps.setProperty(PropertyKeyConst.SERVER_ADDR, adminProperties.getMeta().getNacos().getAddr());
diff --git a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicService.java b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicCore.java
similarity index 88%
rename from eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicService.java
rename to eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicCore.java
index bd5c5d1..5dba4c2 100644
--- a/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicService.java
+++ b/eventmesh-dashboard-core/src/main/java/org/apache/eventmesh/dashboard/core/store/RocketmqTopicCore.java
@@ -19,7 +19,7 @@
 
 import org.apache.eventmesh.dashboard.common.model.TopicProperties;
 import org.apache.eventmesh.dashboard.core.config.AdminProperties;
-import org.apache.eventmesh.dashboard.service.store.TopicService;
+import org.apache.eventmesh.dashboard.service.store.TopicCore;
 
 import java.util.List;
 
@@ -33,11 +33,11 @@
 
 @Slf4j
 @Service
-public class RocketmqTopicService implements TopicService {
+public class RocketmqTopicCore implements TopicCore {
 
     AdminProperties adminProperties;
 
-    public RocketmqTopicService(AdminProperties adminProperties) {
+    public RocketmqTopicCore(AdminProperties adminProperties) {
         this.adminProperties = adminProperties;
     }
 
diff --git a/eventmesh-dashboard-service/pom.xml b/eventmesh-dashboard-service/pom.xml
index e64ecb5..ebcd111 100644
--- a/eventmesh-dashboard-service/pom.xml
+++ b/eventmesh-dashboard-service/pom.xml
@@ -19,6 +19,7 @@
     </properties>
 
     <dependencies>
+        <!-- EventMesh Dashboard modules -->
         <dependency>
             <groupId>org.apache.eventmesh.dashboard.common</groupId>
             <artifactId>eventmesh-dashboard-common</artifactId>
diff --git a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionCore.java
similarity index 96%
rename from eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionService.java
rename to eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionCore.java
index 6fa0bdf..7fbed10 100644
--- a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionService.java
+++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/ConnectionCore.java
@@ -23,6 +23,6 @@
  * reported by the connector.
  */
 
-public interface ConnectionService {
+public interface ConnectionCore {
 
 }
diff --git a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionCore.java
similarity index 96%
rename from eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionService.java
rename to eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionCore.java
index bff4439..2512a95 100644
--- a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionService.java
+++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/meta/SubscriptionCore.java
@@ -28,7 +28,7 @@
  * reported by the EventMesh runtime.
  */
 
-public interface SubscriptionService {
+public interface SubscriptionCore {
 
     String retrieveConfig(String dataId, String group);
 
diff --git a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicCore.java
similarity index 97%
rename from eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicService.java
rename to eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicCore.java
index c68c9ae..2b37e53 100644
--- a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicService.java
+++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/store/TopicCore.java
@@ -25,7 +25,7 @@
  * Manage topics of eventmesh-storage-plugin (EventMesh Store).
  */
 
-public interface TopicService {
+public interface TopicCore {
 
     /**
      * TODO rename to getTopics after being implemented
