This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new 793b1c13d [SCB-2786]remove EnableServiceComb annotation (#3975)
793b1c13d is described below

commit 793b1c13d03dfac7487948e9c78935dc6e95cba2
Author: liubao68 <[email protected]>
AuthorDate: Tue Oct 17 09:20:26 2023 +0800

    [SCB-2786]remove EnableServiceComb annotation (#3975)
---
 ...ava => ConfigurationSpringBootInitializer.java} | 74 ++---------------
 .../core/ConfigurationSpringInitializer.java       | 92 ----------------------
 .../servicecomb/core/SCBApplicationListener.java   |  7 --
 .../org/apache/servicecomb/core/SCBEngine.java     | 23 +-----
 .../src/main/resources/META-INF/spring.factories   |  2 +-
 coverage-reports/pom.xml                           |  4 -
 .../servicecomb/demo/crossapp/CrossappClient.java  |  2 -
 demo/demo-crossapp/crossapp-server/pom.xml         |  2 +-
 .../servicecomb/demo/crossapp/CrossappServer.java  |  2 -
 .../servicecomb/samples/ConsumerApplication.java   |  2 -
 .../servicecomb/samples/GatewayApplication.java    |  2 -
 .../servicecomb/samples/ProviderApplication.java   |  2 -
 .../servicecomb/samples/ProviderApplication.java   |  2 -
 .../servicecomb/samples/TestClientApplication.java |  2 -
 .../servicecomb/samples/ConsumerApplication.java   |  2 -
 .../servicecomb/samples/GatewayApplication.java    |  2 -
 .../servicecomb/samples/ProviderApplication.java   |  2 -
 .../servicecomb/samples/TestClientApplication.java |  2 -
 .../demo/edge/authentication/AuthMain.java         |  2 -
 .../demo/edge/business/BusinessMain_V1_1_0.java    |  2 -
 .../demo/edge/business/BusinessMain_V1_0_0.java    |  2 -
 .../demo/edge/business/BusinessMain_V2_0_0.java    |  2 -
 .../demo/edge/consumer/ConsumerMain.java           |  2 -
 .../org/apache/servicecomb/demo/edge/EdgeMain.java |  2 -
 .../servicecomb/demo/filter/FilterClient.java      |  2 -
 .../apache/servicecomb/demo/filter/FilterEdge.java |  2 -
 .../servicecomb/demo/filter/FilterServer.java      |  2 -
 .../servicecomb/demo/filter/FilterTests.java       |  2 -
 .../apache/servicecomb/demo/jaxrs/JaxrsClient.java |  2 -
 .../apache/servicecomb/demo/jaxrs/JaxrsServer.java |  2 -
 .../LocalRegistryClientApplication.java            |  2 -
 .../LocalRegistryServerApplication.java            |  5 +-
 .../registry/MultiRegistriesClientApplication.java |  2 -
 .../registry/MultiRegistriesServerApplication.java |  2 -
 .../demo/multiServiceCenterClient/Application.java |  2 -
 .../demo/multiServiceCenter/ServerApplication.java |  2 -
 .../ServerApplication.java                         |  2 -
 .../demo/multiple/a/client/AClientMain.java        |  2 -
 .../demo/multiple/a/server/AServerMain.java        |  2 -
 .../demo/multiple/b/client/BClientMain.java        |  2 -
 .../demo/multiple/b/server/BServerMain.java        |  2 -
 .../demo/multiple/client/MultipleClient.java       |  2 -
 .../demo/multiple/server/MultipleServer.java       |  2 -
 .../servicecomb/samples/ConsumerApplication.java   |  2 -
 .../servicecomb/samples/GatewayApplication.java    |  2 -
 .../servicecomb/samples/ProviderApplication.java   |  2 -
 .../servicecomb/samples/TestClientApplication.java |  2 -
 .../servicecomb/demo/pojo/client/PojoClient.java   |  4 +-
 .../servicecomb/demo/pojo/server/PojoServer.java   |  4 +-
 .../servicecomb/demo/prefix/Application.java       |  2 -
 .../servicecomb/demo/prefix/PrefixApplication.java |  2 -
 .../demo/springboot/pojo/client/PojoClient.java    |  4 +-
 .../demo/springboot/pojo/server/PojoServer.java    |  2 -
 .../springmvc/client/SpringMvcClient.java          |  2 -
 .../springmvc/server/SpringmvcServer.java          |  2 -
 .../demo/springmvc/SpringmvcClient.java            |  4 +-
 .../demo/springmvc/SpringmvcServer.java            |  2 -
 .../demo/zeroconfig/client/ClientApplication.java  |  2 -
 .../demo/zeroconfig/edge/EdgeApplication.java      |  2 -
 .../demo/zeroconfig/server/ServerApplication.java  |  3 +-
 .../demo/zeroconfig/tests/Application.java         |  2 -
 dependencies/bom/pom.xml                           |  5 --
 distribution/pom.xml                               |  4 -
 .../foundation/common/utils/BeanUtils.java         |  4 -
 .../main/resources/META-INF/spring/cse.bean.xml    | 25 ------
 .../dashboard/monitor/DashboardConfiguration.java  | 22 ++++++
 .../resources/META-INF/spring/services.bean.xml    | 25 ------
 .../pom.xml                                        | 21 ++++-
 .../starter/servlet/RestServletInitializer.java    |  2 +-
 .../pom.xml                                        | 19 ++++-
 .../java-chassis-spring-boot-starter/pom.xml       | 64 ---------------
 .../ConfigurationSpringBootInitializer.java        | 34 --------
 .../springboot/starter/EnableServiceComb.java      | 36 ---------
 .../starter/ServiceCombSpringConfiguration.java    | 27 -------
 spring-boot/spring-boot-starters/pom.xml           |  1 -
 75 files changed, 76 insertions(+), 537 deletions(-)

diff --git 
a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
 
b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringBootInitializer.java
similarity index 65%
copy from 
core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
copy to 
core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringBootInitializer.java
index 6465457bd..3e401a42d 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringBootInitializer.java
@@ -14,28 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.servicecomb.core;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.stream.Collectors;
 
 import org.apache.servicecomb.config.ConfigMapping;
-import org.apache.servicecomb.config.DynamicPropertiesSource;
 import org.apache.servicecomb.config.YAMLUtil;
 import org.apache.servicecomb.config.file.MicroserviceConfigLoader;
 import org.apache.servicecomb.foundation.bootstrap.BootStrapService;
 import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.EnvironmentAware;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.env.EnvironmentPostProcessor;
 import org.springframework.context.annotation.Conditional;
-import 
org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.core.Ordered;
 import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.core.env.EnumerablePropertySource;
 import org.springframework.core.env.Environment;
@@ -43,51 +36,20 @@ import org.springframework.core.env.MapPropertySource;
 import org.springframework.core.env.MutablePropertySources;
 
 /**
- *  Add dynamic configuration, microserive.yaml to spring
+ * Add microservice.yaml to Environment earlier<br>
+ * to affect {@link Conditional}<br>
  */
-public class ConfigurationSpringInitializer extends 
PropertySourcesPlaceholderConfigurer implements EnvironmentAware {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(ConfigurationSpringInitializer.class);
-
+public class ConfigurationSpringBootInitializer implements 
EnvironmentPostProcessor {
   public static final String MICROSERVICE_PROPERTY_SOURCE_NAME = 
"microservice.yaml";
 
   public static final String MAPPING_PROPERTY_SOURCE_NAME = "mapping.yaml";
 
-  public static final String EXTERNAL_INIT = "scb-config-external-init";
-
-  public static void setExternalInit(boolean value) {
-    System.setProperty(EXTERNAL_INIT, String.valueOf(value));
-  }
-
-  public static boolean isExternalInit() {
-    return Boolean.getBoolean(EXTERNAL_INIT);
-  }
-
   private final List<BootStrapService> bootStrapServices = 
SPIServiceUtils.getSortedService(BootStrapService.class);
 
-  private final List<DynamicPropertiesSource<?>> dynamicPropertiesSources;
-
-  public ConfigurationSpringInitializer(List<DynamicPropertiesSource<?>> 
dynamicPropertiesSources) {
-    setOrder(Ordered.LOWEST_PRECEDENCE / 2);
-    setIgnoreUnresolvablePlaceholders(true);
-    this.dynamicPropertiesSources = dynamicPropertiesSources;
-  }
-
-  /**
-   * Get configurations from Spring, merge them into the configurations of 
ServiceComb.
-   * @param environment From which to get the extra config.
-   */
   @Override
-  public void setEnvironment(Environment environment) {
-    super.setEnvironment(environment);
-    if (isExternalInit()) {
-      return;
-    }
-
+  public void postProcessEnvironment(ConfigurableEnvironment environment, 
SpringApplication application) {
     addMicroserviceDefinitions(environment);
-
     startupBootStrapService(environment);
-
-    addDynamicConfigurationToSpring(environment);
   }
 
   public static void addMicroserviceDefinitions(Environment environment) {
@@ -164,28 +126,4 @@ public class ConfigurationSpringInitializer extends 
PropertySourcesPlaceholderCo
     Map<String, Object> mappings = ConfigMapping.getConvertedMap(environment);
     propertySources.addFirst(new 
MapPropertySource(MAPPING_PROPERTY_SOURCE_NAME, mappings));
   }
-
-  private void addDynamicConfigurationToSpring(Environment environment) {
-    if (!(environment instanceof ConfigurableEnvironment)) {
-      return;
-    }
-    try {
-      for (DynamicPropertiesSource<?> dynamicPropertiesSource : 
dynamicPropertiesSources) {
-        ((ConfigurableEnvironment) environment).getPropertySources()
-            .addFirst(dynamicPropertiesSource.create(environment));
-      }
-    } catch (Exception e) {
-      if (environment.getProperty(CoreConst.PRINT_SENSITIVE_ERROR_MESSAGE, 
boolean.class,
-          false)) {
-        LOGGER.warn("set up spring property source failed.", e);
-      } else {
-        LOGGER.warn("set up spring property source failed. msg: {}", 
e.getMessage());
-      }
-    }
-  }
-
-  @Override
-  protected Properties mergeProperties() throws IOException {
-    return super.mergeProperties();
-  }
 }
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
 
b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
index 6465457bd..7ab2a29ba 100644
--- 
a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
+++ 
b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
@@ -18,29 +18,17 @@
 package org.apache.servicecomb.core;
 
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Properties;
-import java.util.stream.Collectors;
 
-import org.apache.servicecomb.config.ConfigMapping;
 import org.apache.servicecomb.config.DynamicPropertiesSource;
-import org.apache.servicecomb.config.YAMLUtil;
-import org.apache.servicecomb.config.file.MicroserviceConfigLoader;
-import org.apache.servicecomb.foundation.bootstrap.BootStrapService;
-import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.EnvironmentAware;
-import org.springframework.context.annotation.Conditional;
 import 
org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
 import org.springframework.core.Ordered;
 import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.EnumerablePropertySource;
 import org.springframework.core.env.Environment;
-import org.springframework.core.env.MapPropertySource;
-import org.springframework.core.env.MutablePropertySources;
 
 /**
  *  Add dynamic configuration, microserive.yaml to spring
@@ -62,8 +50,6 @@ public class ConfigurationSpringInitializer extends 
PropertySourcesPlaceholderCo
     return Boolean.getBoolean(EXTERNAL_INIT);
   }
 
-  private final List<BootStrapService> bootStrapServices = 
SPIServiceUtils.getSortedService(BootStrapService.class);
-
   private final List<DynamicPropertiesSource<?>> dynamicPropertiesSources;
 
   public ConfigurationSpringInitializer(List<DynamicPropertiesSource<?>> 
dynamicPropertiesSources) {
@@ -83,87 +69,9 @@ public class ConfigurationSpringInitializer extends 
PropertySourcesPlaceholderCo
       return;
     }
 
-    addMicroserviceDefinitions(environment);
-
-    startupBootStrapService(environment);
-
     addDynamicConfigurationToSpring(environment);
   }
 
-  public static void addMicroserviceDefinitions(Environment environment) {
-    addMicroserviceYAMLToSpring(environment);
-    addMappingToSpring(environment);
-  }
-
-  private void startupBootStrapService(Environment environment) {
-    bootStrapServices.forEach(bootStrapService -> 
bootStrapService.startup(environment));
-  }
-
-  /**
-   * make springboot have a change to add microservice.yaml source earlier<br>
-   * to affect {@link Conditional}
-   * @param environment environment
-   */
-  private static void addMicroserviceYAMLToSpring(Environment environment) {
-    if (!(environment instanceof ConfigurableEnvironment)) {
-      return;
-    }
-
-    MutablePropertySources propertySources = ((ConfigurableEnvironment) 
environment).getPropertySources();
-    if (propertySources.contains(MICROSERVICE_PROPERTY_SOURCE_NAME)) {
-      return;
-    }
-
-    propertySources.addLast(new 
EnumerablePropertySource<MicroserviceConfigLoader>(MICROSERVICE_PROPERTY_SOURCE_NAME)
 {
-      private final Map<String, Object> values = new HashMap<>();
-
-      private final String[] propertyNames;
-
-      {
-        MicroserviceConfigLoader loader = new MicroserviceConfigLoader();
-        loader.loadAndSort();
-
-        loader.getConfigModels()
-            .forEach(configModel -> values.putAll(YAMLUtil.retrieveItems("", 
configModel.getConfig())));
-
-        propertyNames = values.keySet().toArray(new String[0]);
-      }
-
-      @Override
-      public String[] getPropertyNames() {
-        return propertyNames;
-      }
-
-      @SuppressWarnings("unchecked")
-      @Override
-      public Object getProperty(String name) {
-        Object value = this.values.get(name);
-
-        // spring will not resolve nested placeholder of list, so try to fix 
the problem
-        if (value instanceof List) {
-          value = ((List<Object>) value).stream()
-              .filter(item -> item instanceof String)
-              .map(item -> environment.resolvePlaceholders((String) item))
-              .collect(Collectors.toList());
-        }
-        return value;
-      }
-    });
-  }
-
-  private static void addMappingToSpring(Environment environment) {
-    if (!(environment instanceof ConfigurableEnvironment)) {
-      return;
-    }
-
-    MutablePropertySources propertySources = ((ConfigurableEnvironment) 
environment).getPropertySources();
-    if (propertySources.contains(MAPPING_PROPERTY_SOURCE_NAME)) {
-      return;
-    }
-
-    Map<String, Object> mappings = ConfigMapping.getConvertedMap(environment);
-    propertySources.addFirst(new 
MapPropertySource(MAPPING_PROPERTY_SOURCE_NAME, mappings));
-  }
 
   private void addDynamicConfigurationToSpring(Environment environment) {
     if (!(environment instanceof ConfigurableEnvironment)) {
diff --git 
a/core/src/main/java/org/apache/servicecomb/core/SCBApplicationListener.java 
b/core/src/main/java/org/apache/servicecomb/core/SCBApplicationListener.java
index 4363a8cff..d290a604a 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBApplicationListener.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBApplicationListener.java
@@ -78,13 +78,6 @@ public class SCBApplicationListener
         ((AbstractApplicationContext) 
applicationContext).registerShutdownHook();
       }
 
-      //SCBEngine init first, hence we do not need worry that when other beans 
need use the
-      //producer microserviceMeta, the SCBEngine is not inited.
-//        String serviceName = 
RegistryUtils.getMicroservice().getServiceName();
-//        SCBEngine.getInstance().setProducerMicroserviceMeta(new 
MicroserviceMeta(serviceName).setConsumer(false));
-//        
SCBEngine.getInstance().setProducerProviderManager(applicationContext.getBean(ProducerProviderManager.class));
-//        
SCBEngine.getInstance().setConsumerProviderManager(applicationContext.getBean(ConsumerProviderManager.class));
-//        
SCBEngine.getInstance().setTransportManager(applicationContext.getBean(TransportManager.class));
       
scbEngine.setPriorityPropertyManager(applicationContext.getBean(PriorityPropertyManager.class));
       
scbEngine.setFilterChainsManager(applicationContext.getBean(FilterChainsManager.class));
       scbEngine.getConsumerProviderManager().getConsumerProviderList()
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java 
b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index d74399002..e63d2a497 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -42,7 +42,6 @@ import 
org.apache.servicecomb.core.provider.consumer.MicroserviceReferenceConfig
 import org.apache.servicecomb.core.provider.producer.ProducerProviderManager;
 import org.apache.servicecomb.core.registry.discovery.SwaggerLoader;
 import org.apache.servicecomb.core.transport.TransportManager;
-import org.apache.servicecomb.foundation.common.VendorExtensions;
 import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
 import org.apache.servicecomb.foundation.common.event.EventManager;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
@@ -109,12 +108,8 @@ public class SCBEngine {
 
   private final SwaggerEnvironment swaggerEnvironment = new 
SwaggerEnvironment();
 
-  private final VendorExtensions vendorExtensions = new VendorExtensions();
-
   private SwaggerLoader swaggerLoader;
 
-  private Thread shutdownHook;
-
   private RegistrationManager registrationManager;
 
   private MicroserviceProperties microserviceProperties;
@@ -210,10 +205,6 @@ public class SCBEngine {
     return applicationContext;
   }
 
-  public VendorExtensions getVendorExtensions() {
-    return vendorExtensions;
-  }
-
   public String getAppId() {
     return this.microserviceProperties.getApplication();
   }
@@ -317,12 +308,14 @@ public class SCBEngine {
 
   @AllowConcurrentEvents
   @Subscribe
+  @SuppressWarnings("unused")
   public void onInvocationStart(InvocationStartEvent event) {
     invocationStartedCounter.incrementAndGet();
   }
 
   @AllowConcurrentEvents
   @Subscribe
+  @SuppressWarnings("unused")
   public void onInvocationFinish(InvocationFinishEvent event) {
     invocationFinishedCounter.incrementAndGet();
   }
@@ -400,9 +393,6 @@ public class SCBEngine {
     status = SCBStatus.UP;
     triggerEvent(EventType.AFTER_REGISTRY);
 
-    shutdownHook = new Thread(this::destroyForShutdownHook);
-    Runtime.getRuntime().addShutdownHook(shutdownHook);
-
     // Keep this message for tests cases work.
     LOGGER.warn("ServiceComb is ready.");
   }
@@ -416,11 +406,6 @@ public class SCBEngine {
     producerMicroserviceMeta.setMicroserviceVersionsMeta(new 
MicroserviceVersionsMeta(this));
   }
 
-  public void destroyForShutdownHook() {
-    shutdownHook = null;
-    destroy();
-  }
-
   /**
    * not allow throw any exception
    * even some step throw exception, must catch it and go on, otherwise 
shutdown process will be broken.
@@ -435,10 +420,6 @@ public class SCBEngine {
   }
 
   private void doDestroy() {
-    if (shutdownHook != null) {
-      Runtime.getRuntime().removeShutdownHook(shutdownHook);
-    }
-
     //Step 0: turn down the status of this instance in service center,
     // so that the consumers can remove this instance record in advance
     turnDownInstanceStatus();
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/resources/META-INF/spring.factories
 b/core/src/main/resources/META-INF/spring.factories
similarity index 91%
rename from 
spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/resources/META-INF/spring.factories
rename to core/src/main/resources/META-INF/spring.factories
index a21b2cb3c..9c04cb2ce 100644
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/resources/META-INF/spring.factories
+++ b/core/src/main/resources/META-INF/spring.factories
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 org.springframework.boot.env.EnvironmentPostProcessor=\
-  org.apache.servicecomb.springboot.starter.ConfigurationSpringBootInitializer
+  org.apache.servicecomb.core.ConfigurationSpringBootInitializer
diff --git a/coverage-reports/pom.xml b/coverage-reports/pom.xml
index 6fea27342..3199b48bc 100644
--- a/coverage-reports/pom.xml
+++ b/coverage-reports/pom.xml
@@ -224,10 +224,6 @@
     </dependency>
 
     <!-- spring boot -->
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>java-chassis-spring-boot-starter-servlet</artifactId>
diff --git 
a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
 
b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
index 2604a6bae..25772d294 100644
--- 
a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
+++ 
b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
@@ -24,7 +24,6 @@ import 
org.apache.servicecomb.core.provider.consumer.InvokerUtils;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -36,7 +35,6 @@ import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
 @SpringBootApplication
-@EnableServiceComb
 public class CrossappClient {
   @RpcReference(microserviceName = "appServer:appService", schemaId = 
"helloworld")
   private static HelloWorld helloWorld;
diff --git a/demo/demo-crossapp/crossapp-server/pom.xml 
b/demo/demo-crossapp/crossapp-server/pom.xml
index db4b7a525..bd257fa28 100644
--- a/demo/demo-crossapp/crossapp-server/pom.xml
+++ b/demo/demo-crossapp/crossapp-server/pom.xml
@@ -35,7 +35,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
-      <artifactId>provider-pojo</artifactId>
+      <artifactId>provider-jaxrs</artifactId>
     </dependency>
   </dependencies>
 
diff --git 
a/demo/demo-crossapp/crossapp-server/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappServer.java
 
b/demo/demo-crossapp/crossapp-server/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappServer.java
index f8a644a14..63678f2e9 100644
--- 
a/demo/demo-crossapp/crossapp-server/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappServer.java
+++ 
b/demo/demo-crossapp/crossapp-server/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappServer.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.crossapp;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class CrossappServer {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(CrossappServer.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-cse-v1/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
 
b/demo/demo-cse-v1/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
index 74068d303..3e7a2a0e2 100644
--- 
a/demo/demo-cse-v1/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
+++ 
b/demo/demo-cse-v1/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ConsumerApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v1/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
 
b/demo/demo-cse-v1/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
index 3f1026070..7d58caafd 100644
--- 
a/demo/demo-cse-v1/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
+++ 
b/demo/demo-cse-v1/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class GatewayApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v1/provider-canary/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
 
b/demo/demo-cse-v1/provider-canary/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
index f288353e6..fde6f36b2 100644
--- 
a/demo/demo-cse-v1/provider-canary/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
+++ 
b/demo/demo-cse-v1/provider-canary/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ProviderApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v1/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
 
b/demo/demo-cse-v1/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
index f288353e6..fde6f36b2 100644
--- 
a/demo/demo-cse-v1/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
+++ 
b/demo/demo-cse-v1/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ProviderApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
 
b/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
index b18a13337..10d62c6bb 100644
--- 
a/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
+++ 
b/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.samples;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class TestClientApplication {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TestClientApplication.class);
 
diff --git 
a/demo/demo-cse-v2/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
 
b/demo/demo-cse-v2/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
index 74068d303..3e7a2a0e2 100644
--- 
a/demo/demo-cse-v2/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
+++ 
b/demo/demo-cse-v2/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ConsumerApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v2/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
 
b/demo/demo-cse-v2/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
index 3f1026070..7d58caafd 100644
--- 
a/demo/demo-cse-v2/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
+++ 
b/demo/demo-cse-v2/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class GatewayApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v2/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
 
b/demo/demo-cse-v2/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
index f288353e6..fde6f36b2 100644
--- 
a/demo/demo-cse-v2/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
+++ 
b/demo/demo-cse-v2/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ProviderApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
index b18a13337..10d62c6bb 100644
--- 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
+++ 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.samples;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class TestClientApplication {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TestClientApplication.class);
 
diff --git 
a/demo/demo-edge/authentication/src/main/java/org/apache/servicecomb/demo/edge/authentication/AuthMain.java
 
b/demo/demo-edge/authentication/src/main/java/org/apache/servicecomb/demo/edge/authentication/AuthMain.java
index 6d8b5e946..4928706ed 100644
--- 
a/demo/demo-edge/authentication/src/main/java/org/apache/servicecomb/demo/edge/authentication/AuthMain.java
+++ 
b/demo/demo-edge/authentication/src/main/java/org/apache/servicecomb/demo/edge/authentication/AuthMain.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.edge.authentication;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class AuthMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(AuthMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_1_0.java
 
b/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_1_0.java
index c91eb98eb..f725fa24e 100644
--- 
a/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_1_0.java
+++ 
b/demo/demo-edge/business-1-1-0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_1_0.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.edge.business;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class BusinessMain_V1_1_0 {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(BusinessMain_V1_1_0.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_0_0.java
 
b/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_0_0.java
index 62392557f..e1a57c7e8 100644
--- 
a/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_0_0.java
+++ 
b/demo/demo-edge/business-1.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V1_0_0.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.edge.business;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class BusinessMain_V1_0_0 {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(BusinessMain_V1_0_0.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V2_0_0.java
 
b/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V2_0_0.java
index 9090793c8..81559ce43 100644
--- 
a/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V2_0_0.java
+++ 
b/demo/demo-edge/business-2.0.0/src/main/java/org/apache/servicecomb/demo/edge/business/BusinessMain_V2_0_0.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.edge.business;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class BusinessMain_V2_0_0 {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(BusinessMain_V2_0_0.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
 
b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
index 7e6746b65..f360912be 100644
--- 
a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
+++ 
b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/ConsumerMain.java
@@ -20,13 +20,11 @@ package org.apache.servicecomb.demo.edge.consumer;
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.demo.edge.model.ChannelRequestBase;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ConsumerMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(ConsumerMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
 
b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
index 599fd2594..b1c17a93c 100644
--- 
a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
+++ 
b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/EdgeMain.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.edge;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class EdgeMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(EdgeMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/FilterClient.java
 
b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/FilterClient.java
index 94e3883f5..e5c0cf07e 100644
--- 
a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/FilterClient.java
+++ 
b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/FilterClient.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.demo.filter;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class FilterClient {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(FilterClient.class);
 
diff --git 
a/demo/demo-filter/filter-edge/src/main/java/org/apache/servicecomb/demo/filter/FilterEdge.java
 
b/demo/demo-filter/filter-edge/src/main/java/org/apache/servicecomb/demo/filter/FilterEdge.java
index be3904a53..8ea4b7cb2 100644
--- 
a/demo/demo-filter/filter-edge/src/main/java/org/apache/servicecomb/demo/filter/FilterEdge.java
+++ 
b/demo/demo-filter/filter-edge/src/main/java/org/apache/servicecomb/demo/filter/FilterEdge.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.demo.filter;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class FilterEdge {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(FilterEdge.class);
 
diff --git 
a/demo/demo-filter/filter-server/src/main/java/org/apache/servicecomb/demo/filter/FilterServer.java
 
b/demo/demo-filter/filter-server/src/main/java/org/apache/servicecomb/demo/filter/FilterServer.java
index cf3d87795..c947b0e7d 100644
--- 
a/demo/demo-filter/filter-server/src/main/java/org/apache/servicecomb/demo/filter/FilterServer.java
+++ 
b/demo/demo-filter/filter-server/src/main/java/org/apache/servicecomb/demo/filter/FilterServer.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.demo.filter;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class FilterServer {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(FilterServer.class);
 
diff --git 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/FilterTests.java
 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/FilterTests.java
index 167e5a3c9..0c7551b68 100644
--- 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/FilterTests.java
+++ 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/FilterTests.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.demo.filter;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class FilterTests {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(FilterTests.class);
 
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
index 133760548..4d23e6d42 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
@@ -37,7 +37,6 @@ import 
org.apache.servicecomb.demo.jaxrs.client.validation.ValidationServiceClie
 import org.apache.servicecomb.demo.validator.Student;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.slf4j.Logger;
@@ -57,7 +56,6 @@ import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response.Status;
 
 @SpringBootApplication
-@EnableServiceComb
 public class JaxrsClient {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(JaxrsClient.class);
 
diff --git 
a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsServer.java
 
b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsServer.java
index 6948444a8..4cd136d0f 100644
--- 
a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsServer.java
+++ 
b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsServer.java
@@ -20,13 +20,11 @@ package org.apache.servicecomb.demo.jaxrs;
 import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory;
 import org.apache.servicecomb.demo.RestObjectMapperWithStringMapper;
 import 
org.apache.servicecomb.demo.RestObjectMapperWithStringMapperNotWriteNull;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class JaxrsServer {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(JaxrsServer.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryClientApplication.java
 
b/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryClientApplication.java
index 5346cab59..21344f1cb 100644
--- 
a/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryClientApplication.java
+++ 
b/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryClientApplication.java
@@ -20,13 +20,11 @@ package org.apache.servicecomb.demo.localRegistryClient;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class LocalRegistryClientApplication {
   public static void main(final String[] args) throws Exception {
     new 
SpringApplicationBuilder().sources(LocalRegistryClientApplication.class)
diff --git 
a/demo/demo-local-registry/demo-local-registry-server/src/main/java/org/apache/servicecomb/demo/localRegistryServer/LocalRegistryServerApplication.java
 
b/demo/demo-local-registry/demo-local-registry-server/src/main/java/org/apache/servicecomb/demo/localRegistryServer/LocalRegistryServerApplication.java
index cd696deb2..e574177a9 100644
--- 
a/demo/demo-local-registry/demo-local-registry-server/src/main/java/org/apache/servicecomb/demo/localRegistryServer/LocalRegistryServerApplication.java
+++ 
b/demo/demo-local-registry/demo-local-registry-server/src/main/java/org/apache/servicecomb/demo/localRegistryServer/LocalRegistryServerApplication.java
@@ -21,16 +21,15 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class LocalRegistryServerApplication {
   public static void main(final String[] args) throws Exception {
-    new 
SpringApplicationBuilder().sources(LocalRegistryServerApplication.class).web(WebApplicationType.SERVLET).build().run(args);
+    new 
SpringApplicationBuilder().sources(LocalRegistryServerApplication.class).web(WebApplicationType.SERVLET).build()
+        .run(args);
 
     SelfServiceInvoker invoker = BeanUtils.getBean("SelfServiceInvoker");
     invoker.latch.await(10, TimeUnit.SECONDS);
diff --git 
a/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesClientApplication.java
 
b/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesClientApplication.java
index bde89008a..87efbff57 100644
--- 
a/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesClientApplication.java
+++ 
b/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesClientApplication.java
@@ -19,14 +19,12 @@ package org.apache.servicecomb.demo.registry;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.stereotype.Component;
 
 @SpringBootApplication
-@EnableServiceComb
 @Component
 public class MultiRegistriesClientApplication {
 
diff --git 
a/demo/demo-multi-registries/demo-multi-registries-server/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerApplication.java
 
b/demo/demo-multi-registries/demo-multi-registries-server/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerApplication.java
index 220f5fff4..afacef115 100644
--- 
a/demo/demo-multi-registries/demo-multi-registries-server/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerApplication.java
+++ 
b/demo/demo-multi-registries/demo-multi-registries-server/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerApplication.java
@@ -21,13 +21,11 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class MultiRegistriesServerApplication {
   public static void main(final String[] args) throws Exception {
     new 
SpringApplicationBuilder().sources(MultiRegistriesServerApplication.class)
diff --git 
a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
 
b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
index b1ee02598..426465116 100644
--- 
a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
+++ 
b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/Application.java
@@ -23,14 +23,12 @@ import java.util.Set;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.stereotype.Component;
 
 @SpringBootApplication
-@EnableServiceComb
 @Component
 public class Application {
 
diff --git 
a/demo/demo-multi-service-center/demo-multi-service-center-serverA/src/main/java/org/apache/servicecomb/demo/multiServiceCenter/ServerApplication.java
 
b/demo/demo-multi-service-center/demo-multi-service-center-serverA/src/main/java/org/apache/servicecomb/demo/multiServiceCenter/ServerApplication.java
index cb98f8ace..4515d6c75 100644
--- 
a/demo/demo-multi-service-center/demo-multi-service-center-serverA/src/main/java/org/apache/servicecomb/demo/multiServiceCenter/ServerApplication.java
+++ 
b/demo/demo-multi-service-center/demo-multi-service-center-serverA/src/main/java/org/apache/servicecomb/demo/multiServiceCenter/ServerApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.multiServiceCenter;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ServerApplication {
   public static void main(final String[] args) throws Exception {
     new SpringApplicationBuilder().sources(ServerApplication.class)
diff --git 
a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ServerApplication.java
 
b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ServerApplication.java
index 851432d7b..49106b7b8 100644
--- 
a/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ServerApplication.java
+++ 
b/demo/demo-multi-service-center/demo-multi-service-center-serverB/src/main/java/org/apache/servicecomb/demo/multiServiceCenterServerB/ServerApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.multiServiceCenterServerB;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ServerApplication {
   public static void main(final String[] args) throws Exception {
     new SpringApplicationBuilder().sources(ServerApplication.class)
diff --git 
a/demo/demo-multiple/a-client/src/main/java/org/apache/servicecomb/demo/multiple/a/client/AClientMain.java
 
b/demo/demo-multiple/a-client/src/main/java/org/apache/servicecomb/demo/multiple/a/client/AClientMain.java
index f00fe5459..907df46c2 100644
--- 
a/demo/demo-multiple/a-client/src/main/java/org/apache/servicecomb/demo/multiple/a/client/AClientMain.java
+++ 
b/demo/demo-multiple/a-client/src/main/java/org/apache/servicecomb/demo/multiple/a/client/AClientMain.java
@@ -19,11 +19,9 @@ package org.apache.servicecomb.demo.multiple.a.client;
 
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
-@EnableServiceComb
 public class AClientMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(AClientMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-multiple/a-server/src/main/java/org/apache/servicecomb/demo/multiple/a/server/AServerMain.java
 
b/demo/demo-multiple/a-server/src/main/java/org/apache/servicecomb/demo/multiple/a/server/AServerMain.java
index df21aeb54..40c96981c 100644
--- 
a/demo/demo-multiple/a-server/src/main/java/org/apache/servicecomb/demo/multiple/a/server/AServerMain.java
+++ 
b/demo/demo-multiple/a-server/src/main/java/org/apache/servicecomb/demo/multiple/a/server/AServerMain.java
@@ -17,11 +17,9 @@
 
 package org.apache.servicecomb.demo.multiple.a.server;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
-@EnableServiceComb
 public class AServerMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(AServerMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-multiple/b-client/src/main/java/org/apache/servicecomb/demo/multiple/b/client/BClientMain.java
 
b/demo/demo-multiple/b-client/src/main/java/org/apache/servicecomb/demo/multiple/b/client/BClientMain.java
index ca10b9fc8..a6400d91a 100644
--- 
a/demo/demo-multiple/b-client/src/main/java/org/apache/servicecomb/demo/multiple/b/client/BClientMain.java
+++ 
b/demo/demo-multiple/b-client/src/main/java/org/apache/servicecomb/demo/multiple/b/client/BClientMain.java
@@ -19,11 +19,9 @@ package org.apache.servicecomb.demo.multiple.b.client;
 
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
-@EnableServiceComb
 public class BClientMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(BClientMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-multiple/b-server/src/main/java/org/apache/servicecomb/demo/multiple/b/server/BServerMain.java
 
b/demo/demo-multiple/b-server/src/main/java/org/apache/servicecomb/demo/multiple/b/server/BServerMain.java
index d3fe61682..267925ace 100644
--- 
a/demo/demo-multiple/b-server/src/main/java/org/apache/servicecomb/demo/multiple/b/server/BServerMain.java
+++ 
b/demo/demo-multiple/b-server/src/main/java/org/apache/servicecomb/demo/multiple/b/server/BServerMain.java
@@ -17,11 +17,9 @@
 
 package org.apache.servicecomb.demo.multiple.b.server;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
-@EnableServiceComb
 public class BServerMain {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(BServerMain.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-multiple/multiple-client/src/main/java/org/apache/servicecomb/demo/multiple/client/MultipleClient.java
 
b/demo/demo-multiple/multiple-client/src/main/java/org/apache/servicecomb/demo/multiple/client/MultipleClient.java
index 2768bf306..ae804ad8b 100644
--- 
a/demo/demo-multiple/multiple-client/src/main/java/org/apache/servicecomb/demo/multiple/client/MultipleClient.java
+++ 
b/demo/demo-multiple/multiple-client/src/main/java/org/apache/servicecomb/demo/multiple/client/MultipleClient.java
@@ -20,14 +20,12 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.demo.multiple.a.client.AClient;
 import org.apache.servicecomb.demo.multiple.b.client.BClient;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
-@EnableServiceComb
 @ComponentScan(basePackages = {"org.apache.servicecomb.demo.multiple.a.client",
     "org.apache.servicecomb.demo.multiple.b.client"})
 public class MultipleClient {
diff --git 
a/demo/demo-multiple/multiple-server/src/main/java/org/apache/servicecomb/demo/multiple/server/MultipleServer.java
 
b/demo/demo-multiple/multiple-server/src/main/java/org/apache/servicecomb/demo/multiple/server/MultipleServer.java
index 6e12e828e..5b830e46e 100644
--- 
a/demo/demo-multiple/multiple-server/src/main/java/org/apache/servicecomb/demo/multiple/server/MultipleServer.java
+++ 
b/demo/demo-multiple/multiple-server/src/main/java/org/apache/servicecomb/demo/multiple/server/MultipleServer.java
@@ -16,14 +16,12 @@
  */
 package org.apache.servicecomb.demo.multiple.server;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
-@EnableServiceComb
 @ComponentScan(basePackages = {"org.apache.servicecomb.demo.multiple.a.server",
     "org.apache.servicecomb.demo.multiple.b.server"})
 public class MultipleServer {
diff --git 
a/demo/demo-nacos/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
 
b/demo/demo-nacos/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
index 74068d303..3e7a2a0e2 100644
--- 
a/demo/demo-nacos/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
+++ 
b/demo/demo-nacos/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ConsumerApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-nacos/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
 
b/demo/demo-nacos/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
index 3f1026070..7d58caafd 100644
--- 
a/demo/demo-nacos/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
+++ 
b/demo/demo-nacos/gateway/src/main/java/org/apache/servicecomb/samples/GatewayApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class GatewayApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-nacos/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
 
b/demo/demo-nacos/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
index f288353e6..fde6f36b2 100644
--- 
a/demo/demo-nacos/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
+++ 
b/demo/demo-nacos/provider/src/main/java/org/apache/servicecomb/samples/ProviderApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ProviderApplication {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
 
b/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
index b18a13337..10d62c6bb 100644
--- 
a/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
+++ 
b/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/TestClientApplication.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.samples;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class TestClientApplication {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TestClientApplication.class);
 
diff --git 
a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
 
b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
index 32c5ac9c6..01be34c2a 100644
--- 
a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
+++ 
b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/PojoClient.java
@@ -41,7 +41,6 @@ import org.apache.servicecomb.demo.smartcare.SmartCare;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.foundation.vertx.client.http.HttpClients;
 import org.apache.servicecomb.provider.pojo.RpcReference;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.apache.servicecomb.swagger.invocation.context.ContextUtils;
 import org.apache.servicecomb.swagger.invocation.context.InvocationContext;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
@@ -50,9 +49,10 @@ import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ImportResource;
 
 @SpringBootApplication
-@EnableServiceComb
+@ImportResource(value = "classpath*:META-INF/spring/*.bean.xml")
 public class PojoClient {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(PojoClient.class);
 
diff --git 
a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/PojoServer.java
 
b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/PojoServer.java
index e1a08b7c2..1ae04e578 100644
--- 
a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/PojoServer.java
+++ 
b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/PojoServer.java
@@ -17,13 +17,13 @@
 
 package org.apache.servicecomb.demo.pojo.server;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ImportResource;
 
 @SpringBootApplication
-@EnableServiceComb
+@ImportResource(value = "classpath*:META-INF/spring/*.bean.xml")
 public class PojoServer {
   public static void main(String[] args) throws Exception {
     try {
diff --git 
a/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
 
b/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
index feb7b3deb..d5a7efa48 100644
--- 
a/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
+++ 
b/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
@@ -19,14 +19,12 @@ package org.apache.servicecomb.demo.prefix;
 
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.web.client.RestTemplate;
 
 @SpringBootApplication
-@EnableServiceComb
 public class Application {
   public static void main(final String[] args) throws Exception {
     new 
SpringApplicationBuilder().sources(Application.class).web(WebApplicationType.SERVLET).build().run(args);
diff --git 
a/demo/demo-register-url-prefix/demo-register-url-prefix-server/src/main/java/org/apache/servicecomb/demo/prefix/PrefixApplication.java
 
b/demo/demo-register-url-prefix/demo-register-url-prefix-server/src/main/java/org/apache/servicecomb/demo/prefix/PrefixApplication.java
index f883f05ca..2fc02f7ad 100644
--- 
a/demo/demo-register-url-prefix/demo-register-url-prefix-server/src/main/java/org/apache/servicecomb/demo/prefix/PrefixApplication.java
+++ 
b/demo/demo-register-url-prefix/demo-register-url-prefix-server/src/main/java/org/apache/servicecomb/demo/prefix/PrefixApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.prefix;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class PrefixApplication {
   public static void main(final String[] args) throws Exception {
     new 
SpringApplicationBuilder().sources(PrefixApplication.class).web(WebApplicationType.SERVLET).build().run(args);
diff --git 
a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-client/src/main/java/org/apache/servicecomb/demo/springboot/pojo/client/PojoClient.java
 
b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-client/src/main/java/org/apache/servicecomb/demo/springboot/pojo/client/PojoClient.java
index 11f32a9f5..b5a590b65 100644
--- 
a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-client/src/main/java/org/apache/servicecomb/demo/springboot/pojo/client/PojoClient.java
+++ 
b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-client/src/main/java/org/apache/servicecomb/demo/springboot/pojo/client/PojoClient.java
@@ -17,10 +17,10 @@
 
 package org.apache.servicecomb.demo.springboot.pojo.client;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ImportResource;
 
 /**
  * SpringmvcClient
@@ -28,7 +28,7 @@ import 
org.springframework.boot.builder.SpringApplicationBuilder;
  *
  */
 @SpringBootApplication
-@EnableServiceComb
+@ImportResource(value = "classpath*:META-INF/spring/*.bean.xml")
 public class PojoClient {
 
   public static void main(final String[] args) throws Exception {
diff --git 
a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/PojoServer.java
 
b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/PojoServer.java
index a068886ac..30af50bf5 100644
--- 
a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/PojoServer.java
+++ 
b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/PojoServer.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.springboot.pojo.server;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class PojoServer {
 
   public static void main(final String[] args) throws Exception {
diff --git 
a/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/SpringMvcClient.java
 
b/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/SpringMvcClient.java
index 3beb979f6..8ce77d981 100644
--- 
a/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/SpringMvcClient.java
+++ 
b/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/SpringMvcClient.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.springboot.springmvc.client;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -30,7 +29,6 @@ import 
org.springframework.boot.builder.SpringApplicationBuilder;
  *
  */
 @SpringBootApplication
-@EnableServiceComb
 public class SpringMvcClient {
 
   public static void main(final String[] args) throws Exception {
diff --git 
a/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-server/src/main/java/org/apache/servicecomb/springboot/springmvc/server/SpringmvcServer.java
 
b/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-server/src/main/java/org/apache/servicecomb/springboot/springmvc/server/SpringmvcServer.java
index ea39accb4..acbd39e0c 100644
--- 
a/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-server/src/main/java/org/apache/servicecomb/springboot/springmvc/server/SpringmvcServer.java
+++ 
b/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-server/src/main/java/org/apache/servicecomb/springboot/springmvc/server/SpringmvcServer.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.springboot.springmvc.server;
 
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -28,7 +27,6 @@ import 
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguratio
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication(exclude = {WebMvcAutoConfiguration.class})
-@EnableServiceComb
 public class SpringmvcServer {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(SpringmvcServer.class);
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
index 9aeff02df..4c7c6afc5 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
@@ -37,13 +37,13 @@ import 
org.apache.servicecomb.provider.springmvc.reference.CseRestTemplate;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import 
org.apache.servicecomb.provider.springmvc.reference.UrlWithProviderPrefixClientHttpRequestFactory;
 import 
org.apache.servicecomb.provider.springmvc.reference.UrlWithServiceNameClientHttpRequestFactory;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.context.annotation.ImportResource;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
@@ -55,7 +55,7 @@ import org.springframework.web.client.RestTemplate;
 
 
 @SpringBootApplication
-@EnableServiceComb
+@ImportResource(value = "classpath*:META-INF/spring/*.bean.xml")
 public class SpringmvcClient {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(SpringmvcClient.class);
 
diff --git 
a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcServer.java
 
b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcServer.java
index 3a4fc0985..aa91890c3 100644
--- 
a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcServer.java
+++ 
b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcServer.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.springmvc;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class SpringmvcServer {
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(SpringmvcServer.class).web(WebApplicationType.NONE).run(args);
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientApplication.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientApplication.java
index ba8088905..eaea52f6a 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientApplication.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/ClientApplication.java
@@ -17,13 +17,11 @@
 
 package org.apache.servicecomb.demo.zeroconfig.client;
 
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ClientApplication {
 
   public static void main(final String[] args) throws Exception {
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-edge/src/main/java/org/apache/servicecomb/demo/zeroconfig/edge/EdgeApplication.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-edge/src/main/java/org/apache/servicecomb/demo/zeroconfig/edge/EdgeApplication.java
index 6e15633ec..6ba5795c2 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-edge/src/main/java/org/apache/servicecomb/demo/zeroconfig/edge/EdgeApplication.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-edge/src/main/java/org/apache/servicecomb/demo/zeroconfig/edge/EdgeApplication.java
@@ -21,13 +21,11 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class EdgeApplication {
   public static void main(final String[] args) throws Exception {
     new 
SpringApplicationBuilder().sources(EdgeApplication.class).web(WebApplicationType.NONE).build().run(args);
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/ServerApplication.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/ServerApplication.java
index 271c2c834..a04249fd6 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/ServerApplication.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-server/src/main/java/org/apache/servicecomb/demo/zeroconfig/server/ServerApplication.java
@@ -18,15 +18,14 @@
 package org.apache.servicecomb.demo.zeroconfig.server;
 
 import java.util.concurrent.TimeUnit;
+
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class ServerApplication {
   public static void main(final String[] args) throws Exception {
     new 
SpringApplicationBuilder().sources(ServerApplication.class).web(WebApplicationType.SERVLET).build().run(args);
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/Application.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/Application.java
index 5ab428714..3b98119d9 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/Application.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/Application.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.demo.zeroconfig.tests;
 
 import org.apache.servicecomb.demo.CategorizedTestCaseRunner;
 import org.apache.servicecomb.demo.TestMgr;
-import org.apache.servicecomb.springboot.starter.EnableServiceComb;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.WebApplicationType;
@@ -27,7 +26,6 @@ import 
org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 @SpringBootApplication
-@EnableServiceComb
 public class Application {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(Application.class);
 
diff --git a/dependencies/bom/pom.xml b/dependencies/bom/pom.xml
index f6febb1fa..2eeda755d 100644
--- a/dependencies/bom/pom.xml
+++ b/dependencies/bom/pom.xml
@@ -275,11 +275,6 @@
         <version>${project.version}</version>
       </dependency>
       <!-- ServiceComb: spring boot -->
-      <dependency>
-        <groupId>org.apache.servicecomb</groupId>
-        <artifactId>java-chassis-spring-boot-starter</artifactId>
-        <version>${project.version}</version>
-      </dependency>
       <dependency>
         <groupId>org.apache.servicecomb</groupId>
         <artifactId>java-chassis-spring-boot-starter-servlet</artifactId>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index df56de4a5..5cdacc18b 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -230,10 +230,6 @@
     </dependency>
 
     <!-- spring boot -->
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>java-chassis-spring-boot-starter-servlet</artifactId>
diff --git 
a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
 
b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
index dfbd3e272..bc6a648b3 100644
--- 
a/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
+++ 
b/foundations/foundation-common/src/main/java/org/apache/servicecomb/foundation/common/utils/BeanUtils.java
@@ -27,10 +27,6 @@ import org.springframework.context.ApplicationContext;
 
 
 public final class BeanUtils {
-  public static final String DEFAULT_BEAN_CORE_RESOURCE = 
"classpath*:META-INF/spring/scb-core-bean.xml";
-
-  public static final String DEFAULT_BEAN_NORMAL_RESOURCE = 
"classpath*:META-INF/spring/*.bean.xml";
-
   private static ApplicationContext context;
 
   private BeanUtils() {
diff --git 
a/foundations/foundation-vertx/src/main/resources/META-INF/spring/cse.bean.xml 
b/foundations/foundation-vertx/src/main/resources/META-INF/spring/cse.bean.xml
deleted file mode 100644
index 908d9ce19..000000000
--- 
a/foundations/foundation-vertx/src/main/resources/META-INF/spring/cse.bean.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<beans xmlns="http://www.springframework.org/schema/beans";
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";>
-
-  <bean id="cse.executor.vertx-worker" 
class="org.apache.servicecomb.foundation.vertx.executor.VertxWorkerExecutor"/>
-
-</beans>
diff --git 
a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java
 
b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java
index 2949ec34c..885b8bbf2 100644
--- 
a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java
+++ 
b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DashboardConfiguration.java
@@ -18,8 +18,10 @@ package org.apache.servicecomb.huaweicloud.dashboard.monitor;
 
 import 
org.apache.servicecomb.huaweicloud.dashboard.monitor.data.MonitorConstant;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.core.env.Environment;
 
+@Configuration
 public class DashboardConfiguration {
   @Bean
   public MonitorInformationCollector monitorInformationCollector() {
@@ -30,4 +32,24 @@ public class DashboardConfiguration {
   public MonitorConstant monitorConstant(Environment environment) {
     return new MonitorConstant(environment);
   }
+
+  @Bean
+  public MonitorBootListener monitorBootListener() {
+    return new MonitorBootListener();
+  }
+
+  @Bean
+  public DataFactory dataFactory() {
+    return new DataFactory();
+  }
+
+  @Bean
+  public MetricsMonitorDataProvider metricsMonitorDataProvider() {
+    return new MetricsMonitorDataProvider();
+  }
+
+  @Bean
+  public DefaultMonitorDataPublisher defaultMonitorDataPublisher() {
+    return new DefaultMonitorDataPublisher();
+  }
 }
diff --git 
a/huawei-cloud/dashboard/src/main/resources/META-INF/spring/services.bean.xml 
b/huawei-cloud/dashboard/src/main/resources/META-INF/spring/services.bean.xml
deleted file mode 100644
index eef77f2e4..000000000
--- 
a/huawei-cloud/dashboard/src/main/resources/META-INF/spring/services.bean.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<beans xmlns="http://www.springframework.org/schema/beans"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";>
-
-    <bean id="monitorStarterListener" 
class="org.apache.servicecomb.huaweicloud.dashboard.monitor.MonitorBootListener"></bean>
-    <bean id="dataFactory" 
class="org.apache.servicecomb.huaweicloud.dashboard.monitor.DataFactory"></bean>
-    <bean id="metricsMonitorDataProvider" 
class="org.apache.servicecomb.huaweicloud.dashboard.monitor.MetricsMonitorDataProvider"></bean>
-    <bean id="defaultMonitorDataPublisher" 
class="org.apache.servicecomb.huaweicloud.dashboard.monitor.DefaultMonitorDataPublisher"></bean>
-</beans>
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/pom.xml
 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/pom.xml
index ea19d0607..d7a739138 100644
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/pom.xml
+++ 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/pom.xml
@@ -30,10 +30,6 @@
   <name>Java Chassis::Spring Boot Starter::Servlet</name>
 
   <dependencies>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
@@ -42,6 +38,22 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>transport-rest-servlet</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>provider-springmvc</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>provider-jaxrs</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>provider-pojo</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>handler-loadbalance</artifactId>
+    </dependency>
     <dependency>
       <groupId>jakarta.servlet</groupId>
       <artifactId>jakarta.servlet-api</artifactId>
@@ -50,6 +62,7 @@
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>foundation-test-scaffolding</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/src/main/java/org/apache/servicecomb/springboot/starter/servlet/RestServletInitializer.java
 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/src/main/java/org/apache/servicecomb/springboot/starter/servlet/RestServletInitializer.java
index 8538f096e..ee247758f 100644
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/src/main/java/org/apache/servicecomb/springboot/starter/servlet/RestServletInitializer.java
+++ 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-servlet/src/main/java/org/apache/servicecomb/springboot/starter/servlet/RestServletInitializer.java
@@ -68,7 +68,7 @@ public class RestServletInitializer
 
     // when running in embedded tomcat, web container did not listen now. Call 
ServletUtils.init needs server is ready,
     // so mock to listen, and then close.
-    try (ServerSocket ss = new ServerSocket(factory.getPort(), 0, 
factory.getAddress())) {
+    try (ServerSocket ignored = new ServerSocket(factory.getPort(), 0, 
factory.getAddress())) {
       ServletUtils.init(servletContext, environment);
     } catch (IOException e) {
       throw new ServletException(e);
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-standalone/pom.xml
 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-standalone/pom.xml
index 3e08c0dae..314a90652 100644
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-standalone/pom.xml
+++ 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter-standalone/pom.xml
@@ -32,14 +32,24 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
-      <artifactId>java-chassis-spring-boot-starter</artifactId>
+      <artifactId>transport-rest-vertx</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
-      <artifactId>transport-rest-vertx</artifactId>
+      <artifactId>provider-springmvc</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>provider-jaxrs</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>provider-pojo</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>handler-loadbalance</artifactId>
     </dependency>
-
     <!--ConditionEvaluationReportLoggingListener need in autoconfigure-->
     <dependency>
       <groupId>org.hibernate.validator</groupId>
@@ -49,6 +59,7 @@
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>foundation-test-scaffolding</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/pom.xml 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/pom.xml
deleted file mode 100644
index bb1f13887..000000000
--- a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/pom.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0";
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-  <parent>
-    <artifactId>java-chassis-spring-boot-starters</artifactId>
-    <groupId>org.apache.servicecomb</groupId>
-    <version>3.0.0-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>java-chassis-spring-boot-starter</artifactId>
-  <name>Java Chassis::Spring Boot Starter::Starter</name>
-  <dependencies>
-    <dependency>
-      <groupId>org.springframework.boot</groupId>
-      <artifactId>spring-boot-starter</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.springframework.boot</groupId>
-          <artifactId>spring-boot-starter-logging</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>provider-springmvc</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>provider-jaxrs</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>provider-pojo</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-loadbalance</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>handler-flowcontrol-qps</artifactId>
-    </dependency>
-  </dependencies>
-
-</project>
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/ConfigurationSpringBootInitializer.java
 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/ConfigurationSpringBootInitializer.java
deleted file mode 100644
index 115fc686f..000000000
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/ConfigurationSpringBootInitializer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.springboot.starter;
-
-import org.apache.servicecomb.core.ConfigurationSpringInitializer;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.env.EnvironmentPostProcessor;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.core.env.ConfigurableEnvironment;
-
-/**
- * when run with springboot, add microservice.yaml to Environment earlier<br>
- * to affect {@link Conditional}<br>
- */
-public class ConfigurationSpringBootInitializer implements 
EnvironmentPostProcessor {
-  @Override
-  public void postProcessEnvironment(ConfigurableEnvironment environment, 
SpringApplication application) {
-    ConfigurationSpringInitializer.addMicroserviceDefinitions(environment);
-  }
-}
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/EnableServiceComb.java
 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/EnableServiceComb.java
deleted file mode 100644
index 3f8068e3c..000000000
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/EnableServiceComb.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.springboot.starter;
-
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.TYPE;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.springframework.context.annotation.Import;
-
-/**
- * This annotation enables auto-configuration of Spring beans to integrate 
with ServiceComb modules.
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({TYPE, ANNOTATION_TYPE})
-@Import(ServiceCombSpringConfiguration.class)
-public @interface EnableServiceComb {
-
-}
diff --git 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/ServiceCombSpringConfiguration.java
 
b/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/ServiceCombSpringConfiguration.java
deleted file mode 100644
index 09106ab79..000000000
--- 
a/spring-boot/spring-boot-starters/java-chassis-spring-boot-starter/src/main/java/org/apache/servicecomb/springboot/starter/ServiceCombSpringConfiguration.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.springboot.starter;
-
-import org.apache.servicecomb.foundation.common.utils.BeanUtils;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.ImportResource;
-
-@Configuration
-@ImportResource({BeanUtils.DEFAULT_BEAN_CORE_RESOURCE, 
BeanUtils.DEFAULT_BEAN_NORMAL_RESOURCE})
-public class ServiceCombSpringConfiguration {
-
-}
diff --git a/spring-boot/spring-boot-starters/pom.xml 
b/spring-boot/spring-boot-starters/pom.xml
index e30ba300f..0d3de32c4 100644
--- a/spring-boot/spring-boot-starters/pom.xml
+++ b/spring-boot/spring-boot-starters/pom.xml
@@ -32,7 +32,6 @@
   <packaging>pom</packaging>
 
   <modules>
-    <module>java-chassis-spring-boot-starter</module>
     <module>java-chassis-spring-boot-starter-servlet</module>
     <module>java-chassis-spring-boot-starter-standalone</module>
   </modules>

Reply via email to