You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2022/12/13 15:15:30 UTC

[shardingsphere] branch master updated: Remove AdvisorDefinitionServiceEngine (#22858)

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

sunnianjun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new fd7631256d2 Remove AdvisorDefinitionServiceEngine (#22858)
fd7631256d2 is described below

commit fd7631256d26ea16acae399de708664cab189c0f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Dec 13 23:15:19 2022 +0800

    Remove AdvisorDefinitionServiceEngine (#22858)
    
    * Refactor AdvisorDefinitionServiceEngine
    
    * Refactor AdvisorDefinitionServiceEngine
    
    * Remove AdvisorDefinitionServiceEngine
    
    * Refactor ClassAdvisorRegistryFactory
    
    * For code format
---
 .../agent/bootstrap/ShardingSphereAgent.java       |  1 -
 .../advisor/AdvisorDefinitionServiceEngine.java    | 53 ----------------------
 .../core/advisor/ClassAdvisorRegistryFactory.java  |  6 +--
 .../core/bytebuddy/listener/LoggingListener.java   |  4 +-
 .../agent/core/logging/LoggerFactory.java          |  3 --
 .../agent/core/plugin/AgentPluginLoader.java       |  7 ++-
 .../BaseLoggingAdvisorDefinitionService.java       |  8 ++--
 .../PrometheusAdvisorDefinitionService.java        | 12 ++---
 .../tracing/core/advice/TracingAdviceEngine.java   | 11 ++---
 .../adviser/impl/CommandExecutorTaskAdviser.java   | 10 ++--
 .../adviser/impl/JDBCExecutorCallbackAdviser.java  | 10 ++--
 .../adviser/impl/SQLParserEngineAdviser.java       | 10 ++--
 .../definition/JaegerAdvisorDefinitionService.java |  5 +-
 ...enTelemetryTracingAdvisorDefinitionService.java |  5 +-
 .../OpenTracingAdvisorDefinitionService.java       |  5 +-
 .../definition/ZipkinAdvisorDefinitionService.java |  5 +-
 16 files changed, 44 insertions(+), 111 deletions(-)

diff --git a/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java b/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java
index 4710c63ebb2..aa2f61d744f 100644
--- a/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java
+++ b/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java
@@ -71,7 +71,6 @@ public final class ShardingSphereAgent {
         AgentBuilder agentBuilder = new AgentBuilder.Default().with(new ByteBuddy().with(TypeValidation.ENABLED))
                 .ignore(ElementMatchers.isSynthetic())
                 .or(ElementMatchers.nameStartsWith("org.apache.shardingsphere.agent."));
-        
         agentBuilder.type(pluginLoader.typeMatcher())
                 .transform(new ShardingSphereTransformer(pluginLoader))
                 .with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/AdvisorDefinitionServiceEngine.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/AdvisorDefinitionServiceEngine.java
deleted file mode 100644
index 21d5dfba3fb..00000000000
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/AdvisorDefinitionServiceEngine.java
+++ /dev/null
@@ -1,53 +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.shardingsphere.agent.core.advisor;
-
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
-import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
-
-import java.util.Collection;
-
-/**
- * Advisor definition service engine.
- */
-@RequiredArgsConstructor
-public final class AdvisorDefinitionServiceEngine {
-    
-    private final AdvisorDefinitionService advisorDefinitionService;
-    
-    /**
-     * Get advisors.
-     *
-     * @param targetClassName target class name
-     * @return advisors
-     */
-    public ClassAdvisor getAdvisors(final String targetClassName) {
-        return ClassAdvisorRegistryFactory.getRegistry(advisorDefinitionService.getType()).getAdvisor(targetClassName);
-    }
-    
-    /**
-     * Get all advisors.
-     * 
-     * @param isEnhancedForProxy is enhanced for proxy
-     * @return all advisors
-     */
-    public Collection<ClassAdvisor> getAllAdvisors(final boolean isEnhancedForProxy) {
-        return isEnhancedForProxy ? advisorDefinitionService.getProxyAdvisors() : advisorDefinitionService.getJDBCAdvisors();
-    }
-}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/ClassAdvisorRegistryFactory.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/ClassAdvisorRegistryFactory.java
index f3951f67c40..86d283bcf0d 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/ClassAdvisorRegistryFactory.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/ClassAdvisorRegistryFactory.java
@@ -34,10 +34,10 @@ public final class ClassAdvisorRegistryFactory {
     /**
      * Get class advisor registry.
      * 
-     * @param key registry key
+     * @param type registry type
      * @return class advisor registry
      */
-    public static ClassAdvisorRegistry getRegistry(final String key) {
-        return REGISTRIES.computeIfAbsent(key, each -> new ClassAdvisorRegistry());
+    public static ClassAdvisorRegistry getRegistry(final String type) {
+        return REGISTRIES.computeIfAbsent(type, each -> new ClassAdvisorRegistry());
     }
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/listener/LoggingListener.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/listener/LoggingListener.java
index 457c8dec194..eff91fed646 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/listener/LoggingListener.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/listener/LoggingListener.java
@@ -36,7 +36,7 @@ public final class LoggingListener implements Listener {
     
     @Override
     public void onTransformation(final TypeDescription typeDescription, final ClassLoader classLoader, final JavaModule module, final boolean loaded, final DynamicType dynamicType) {
-        LOGGER.debug("On transformation class {}", typeDescription.getTypeName());
+        LOGGER.debug("On transformation class {}.", typeDescription.getTypeName());
     }
     
     @Override
@@ -45,7 +45,7 @@ public final class LoggingListener implements Listener {
     
     @Override
     public void onError(final String typeName, final ClassLoader classLoader, final JavaModule module, final boolean loaded, final Throwable throwable) {
-        LOGGER.error("Failed to instrument {}", typeName, throwable);
+        LOGGER.error("Failed to instrument {}.", typeName, throwable);
     }
     
     @Override
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/logging/LoggerFactory.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/logging/LoggerFactory.java
index b5fe3691a86..10fa5234379 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/logging/LoggerFactory.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/logging/LoggerFactory.java
@@ -45,7 +45,6 @@ public final class LoggerFactory {
      * @return logger
      */
     @SneakyThrows(ReflectiveOperationException.class)
-    @SuppressWarnings("unchecked")
     public static Logger getLogger(final Class<?> clazz) {
         Class<?> factoryClazz = getClassLoader().loadClass("org.slf4j.LoggerFactory");
         Method method = factoryClazz.getMethod("getLogger", Class.class);
@@ -137,7 +136,6 @@ public final class LoggerFactory {
         }
         
         @SneakyThrows(ReflectiveOperationException.class)
-        @SuppressWarnings("unchecked")
         private void invokeMethod(final String methodName, final String msg) {
             Class<?> logicLogger = LoggerFactory.getClassLoader().loadClass("org.slf4j.Logger");
             Method method = logicLogger.getMethod(methodName, String.class);
@@ -145,7 +143,6 @@ public final class LoggerFactory {
         }
         
         @SneakyThrows(ReflectiveOperationException.class)
-        @SuppressWarnings("unchecked")
         private void invokeMethod(final String methodName, final String msg, final Object... arguments) {
             Class<?> logicLogger = LoggerFactory.getClassLoader().loadClass("org.slf4j.Logger");
             Method method = logicLogger.getMethod(methodName, String.class, Object[].class);
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
index 83f53fe1d61..b9eedfbc365 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentPluginLoader.java
@@ -23,14 +23,13 @@ import lombok.Setter;
 import net.bytebuddy.description.type.TypeDescription;
 import net.bytebuddy.matcher.ElementMatcher;
 import net.bytebuddy.matcher.ElementMatcher.Junction;
+import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.config.AgentConfiguration;
 import org.apache.shardingsphere.agent.core.common.AgentClassLoader;
 import org.apache.shardingsphere.agent.core.config.path.AgentPathBuilder;
 import org.apache.shardingsphere.agent.core.config.registry.AgentConfigurationRegistry;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
 import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
 import org.apache.shardingsphere.agent.core.spi.PluginServiceLoader;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.io.File;
@@ -89,8 +88,8 @@ public final class AgentPluginLoader implements PluginLoader {
         Collection<String> pluginNames = getPluginNames();
         for (AdvisorDefinitionService each : PluginServiceLoader.newServiceInstances(AdvisorDefinitionService.class, classLoader)) {
             if (pluginNames.contains(each.getType())) {
-                result.putAll(
-                        new AdvisorDefinitionServiceEngine(each).getAllAdvisors(isEnhancedForProxy).stream().collect(Collectors.toMap(ClassAdvisor::getTargetClassName, Function.identity())));
+                Collection<ClassAdvisor> advisors = isEnhancedForProxy ? each.getProxyAdvisors() : each.getJDBCAdvisors();
+                result.putAll(advisors.stream().collect(Collectors.toMap(ClassAdvisor::getTargetClassName, Function.identity())));
             }
         }
         return ImmutableMap.<String, ClassAdvisor>builder().putAll(result).build();
diff --git a/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingAdvisorDefinitionService.java b/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingAdvisorDefinitionService.java
index d3458cebd1a..245cc7a3563 100644
--- a/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingAdvisorDefinitionService.java
+++ b/agent/plugins/logging/base/src/main/java/org/apache/shardingsphere/agent/plugin/logging/base/definition/BaseLoggingAdvisorDefinitionService.java
@@ -18,10 +18,10 @@
 package org.apache.shardingsphere.agent.plugin.logging.base.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
-import org.apache.shardingsphere.agent.plugin.logging.base.advice.MetaDataContextsFactoryAdvice;
 import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.advisor.StaticMethodAdvisor;
+import org.apache.shardingsphere.agent.core.advisor.ClassAdvisorRegistryFactory;
+import org.apache.shardingsphere.agent.plugin.logging.base.advice.MetaDataContextsFactoryAdvice;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.util.Collection;
@@ -38,8 +38,6 @@ public final class BaseLoggingAdvisorDefinitionService implements AdvisorDefinit
     
     private static final String SCHEMA_METADATA_LOADER_ADVICE_CLASS = MetaDataContextsFactoryAdvice.class.getName();
     
-    private final AdvisorDefinitionServiceEngine engine = new AdvisorDefinitionServiceEngine(this);
-    
     @Override
     public Collection<ClassAdvisor> getProxyAdvisors() {
         return getAdvisors();
@@ -52,7 +50,7 @@ public final class BaseLoggingAdvisorDefinitionService implements AdvisorDefinit
     
     private Collection<ClassAdvisor> getAdvisors() {
         Collection<ClassAdvisor> result = new LinkedList<>();
-        ClassAdvisor classAdvisor = engine.getAdvisors(SCHEMA_METADATA_LOADER_CLASS);
+        ClassAdvisor classAdvisor = ClassAdvisorRegistryFactory.getRegistry(getType()).getAdvisor(SCHEMA_METADATA_LOADER_CLASS);
         classAdvisor.getStaticMethodAdvisors().add(
                 new StaticMethodAdvisor(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)), SCHEMA_METADATA_LOADER_ADVICE_CLASS));
         result.add(classAdvisor);
diff --git a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusAdvisorDefinitionService.java b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusAdvisorDefinitionService.java
index fd051738cf9..22608bb40c8 100644
--- a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusAdvisorDefinitionService.java
+++ b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/definition/PrometheusAdvisorDefinitionService.java
@@ -18,14 +18,14 @@
 package org.apache.shardingsphere.agent.metrics.prometheus.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
-import org.apache.shardingsphere.agent.core.yaml.entity.Interceptor;
-import org.apache.shardingsphere.agent.core.yaml.entity.TargetPoint;
-import org.apache.shardingsphere.agent.core.yaml.swapper.InterceptorsYamlSwapper;
 import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.advisor.ConstructorAdvisor;
 import org.apache.shardingsphere.agent.advisor.InstanceMethodAdvisor;
 import org.apache.shardingsphere.agent.advisor.StaticMethodAdvisor;
+import org.apache.shardingsphere.agent.core.advisor.ClassAdvisorRegistryFactory;
+import org.apache.shardingsphere.agent.core.yaml.entity.Interceptor;
+import org.apache.shardingsphere.agent.core.yaml.entity.TargetPoint;
+import org.apache.shardingsphere.agent.core.yaml.swapper.InterceptorsYamlSwapper;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.util.Collection;
@@ -37,8 +37,6 @@ import java.util.LinkedList;
  */
 public final class PrometheusAdvisorDefinitionService implements AdvisorDefinitionService {
     
-    private final AdvisorDefinitionServiceEngine engine = new AdvisorDefinitionServiceEngine(this);
-    
     @Override
     public Collection<ClassAdvisor> getProxyAdvisors() {
         Collection<ClassAdvisor> result = new LinkedList<>();
@@ -51,7 +49,7 @@ public final class PrometheusAdvisorDefinitionService implements AdvisorDefiniti
     }
     
     private ClassAdvisor createClassAdvisor(final Interceptor interceptor) {
-        ClassAdvisor result = engine.getAdvisors(interceptor.getTarget());
+        ClassAdvisor result = ClassAdvisorRegistryFactory.getRegistry(getType()).getAdvisor(interceptor.getTarget());
         if (null != interceptor.getConstructAdvice() && !("".equals(interceptor.getConstructAdvice()))) {
             result.getConstructorAdvisors().add(new ConstructorAdvisor(ElementMatchers.isConstructor(), interceptor.getConstructAdvice()));
         }
diff --git a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingAdviceEngine.java b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingAdviceEngine.java
index aabc9dc807e..74adf9e3502 100644
--- a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingAdviceEngine.java
+++ b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingAdviceEngine.java
@@ -18,12 +18,11 @@
 package org.apache.shardingsphere.agent.plugin.tracing.core.advice;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
+import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl.CommandExecutorTaskAdviser;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl.JDBCExecutorCallbackAdviser;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl.SQLParserEngineAdviser;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -35,7 +34,7 @@ import java.util.LinkedList;
 @RequiredArgsConstructor
 public final class TracingAdviceEngine {
     
-    private final AdvisorDefinitionServiceEngine engine;
+    private final String type;
     
     /**
      * Get proxy tracing advisors.
@@ -50,9 +49,9 @@ public final class TracingAdviceEngine {
                                                      final Class<? extends InstanceMethodAroundAdvice> jdbcExecutorCallbackAdvice) {
         // TODO load from YAML, please ref metrics
         Collection<ClassAdvisor> result = new LinkedList<>();
-        result.add(new CommandExecutorTaskAdviser(engine).getAdvisor(commandExecutorTaskAdvice));
-        result.add(new SQLParserEngineAdviser(engine).getAdvisor(sqlParserEngineAdvice));
-        result.add(new JDBCExecutorCallbackAdviser(engine).getAdvisor(jdbcExecutorCallbackAdvice));
+        result.add(new CommandExecutorTaskAdviser(type).getAdvisor(commandExecutorTaskAdvice));
+        result.add(new SQLParserEngineAdviser(type).getAdvisor(sqlParserEngineAdvice));
+        result.add(new JDBCExecutorCallbackAdviser(type).getAdvisor(jdbcExecutorCallbackAdvice));
         return result;
     }
     
diff --git a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/CommandExecutorTaskAdviser.java b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/CommandExecutorTaskAdviser.java
index 4c80dd2cc35..42c0da377c7 100644
--- a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/CommandExecutorTaskAdviser.java
+++ b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/CommandExecutorTaskAdviser.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl;
 
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
-import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
-import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.advisor.InstanceMethodAdvisor;
+import org.apache.shardingsphere.agent.core.advisor.ClassAdvisorRegistryFactory;
+import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 
 /**
  * Command executor task adviser.
@@ -35,11 +35,11 @@ public final class CommandExecutorTaskAdviser implements TracingAdviser {
     
     private static final String TARGET_METHOD = "run";
     
-    private final AdvisorDefinitionServiceEngine engine;
+    private final String type;
     
     @Override
     public ClassAdvisor getAdvisor(final Class<? extends InstanceMethodAroundAdvice> commandExecutorTaskAdvice) {
-        ClassAdvisor result = engine.getAdvisors(TARGET_CLASS);
+        ClassAdvisor result = ClassAdvisorRegistryFactory.getRegistry(type).getAdvisor(TARGET_CLASS);
         result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisor(ElementMatchers.named(TARGET_METHOD), commandExecutorTaskAdvice.getName()));
         return result;
     }
diff --git a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/JDBCExecutorCallbackAdviser.java b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/JDBCExecutorCallbackAdviser.java
index 4a88c3f0ea1..c7d54827f8f 100644
--- a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/JDBCExecutorCallbackAdviser.java
+++ b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/JDBCExecutorCallbackAdviser.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl;
 
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
-import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
-import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.advisor.InstanceMethodAdvisor;
+import org.apache.shardingsphere.agent.core.advisor.ClassAdvisorRegistryFactory;
+import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 
 /**
  * JDBC executor callback adviser.
@@ -37,11 +37,11 @@ public final class JDBCExecutorCallbackAdviser implements TracingAdviser {
     
     private static final String TARGET_METHOD_FIRST_PARAM = "org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit";
     
-    private final AdvisorDefinitionServiceEngine engine;
+    private final String type;
     
     @Override
     public ClassAdvisor getAdvisor(final Class<? extends InstanceMethodAroundAdvice> jdbcExecutorCallbackAdvice) {
-        ClassAdvisor result = engine.getAdvisors(TARGET_CLASS);
+        ClassAdvisor result = ClassAdvisorRegistryFactory.getRegistry(type).getAdvisor(TARGET_CLASS);
         result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisor(
                 ElementMatchers.named(TARGET_METHOD).and(ElementMatchers.takesArgument(0, ElementMatchers.named(TARGET_METHOD_FIRST_PARAM))), jdbcExecutorCallbackAdvice.getName()));
         return result;
diff --git a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/SQLParserEngineAdviser.java b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/SQLParserEngineAdviser.java
index ac215020805..84a3f3cb6b8 100644
--- a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/SQLParserEngineAdviser.java
+++ b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/adviser/impl/SQLParserEngineAdviser.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl;
 
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
-import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
-import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.advisor.InstanceMethodAdvisor;
+import org.apache.shardingsphere.agent.core.advisor.ClassAdvisorRegistryFactory;
+import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 
 /**
  * SQL parser engine adviser.
@@ -35,11 +35,11 @@ public final class SQLParserEngineAdviser implements TracingAdviser {
     
     private static final String TARGET_METHOD = "parse";
     
-    private final AdvisorDefinitionServiceEngine engine;
+    private final String type;
     
     @Override
     public ClassAdvisor getAdvisor(final Class<? extends InstanceMethodAroundAdvice> sqlParserEngineAdvice) {
-        ClassAdvisor result = engine.getAdvisors(TARGET_CLASS);
+        ClassAdvisor result = ClassAdvisorRegistryFactory.getRegistry(type).getAdvisor(TARGET_CLASS);
         result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisor(ElementMatchers.named(TARGET_METHOD), sqlParserEngineAdvice.getName()));
         return result;
     }
diff --git a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerAdvisorDefinitionService.java b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerAdvisorDefinitionService.java
index 5b92b77123a..1c682a2b355 100644
--- a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerAdvisorDefinitionService.java
+++ b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/definition/JaegerAdvisorDefinitionService.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.jaeger.definition;
 
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
+import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingAdviceEngine;
 import org.apache.shardingsphere.agent.plugin.tracing.jaeger.advice.CommandExecutorTaskAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.jaeger.advice.JDBCExecutorCallbackAdvice;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.util.Collection;
@@ -31,7 +30,7 @@ import java.util.Collection;
  */
 public final class JaegerAdvisorDefinitionService implements AdvisorDefinitionService {
     
-    private final TracingAdviceEngine engine = new TracingAdviceEngine(new AdvisorDefinitionServiceEngine(this));
+    private final TracingAdviceEngine engine = new TracingAdviceEngine(getType());
     
     @Override
     public Collection<ClassAdvisor> getProxyAdvisors() {
diff --git a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingAdvisorDefinitionService.java b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingAdvisorDefinitionService.java
index 0fc5027ca76..4c24f836128 100644
--- a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingAdvisorDefinitionService.java
+++ b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/definition/OpenTelemetryTracingAdvisorDefinitionService.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.definition;
 
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
+import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingAdviceEngine;
 import org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.advice.CommandExecutorTaskAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.advice.JDBCExecutorCallbackAdvice;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.util.Collection;
@@ -31,7 +30,7 @@ import java.util.Collection;
  */
 public final class OpenTelemetryTracingAdvisorDefinitionService implements AdvisorDefinitionService {
     
-    private final TracingAdviceEngine engine = new TracingAdviceEngine(new AdvisorDefinitionServiceEngine(this));
+    private final TracingAdviceEngine engine = new TracingAdviceEngine(getType());
     
     @Override
     public Collection<ClassAdvisor> getProxyAdvisors() {
diff --git a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingAdvisorDefinitionService.java b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingAdvisorDefinitionService.java
index df31caa15b5..bbf840d24ff 100644
--- a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingAdvisorDefinitionService.java
+++ b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/definition/OpenTracingAdvisorDefinitionService.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.opentracing.definition;
 
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
+import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingAdviceEngine;
 import org.apache.shardingsphere.agent.plugin.tracing.opentracing.advice.CommandExecutorTaskAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.opentracing.advice.JDBCExecutorCallbackAdvice;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.util.Collection;
@@ -31,7 +30,7 @@ import java.util.Collection;
  */
 public final class OpenTracingAdvisorDefinitionService implements AdvisorDefinitionService {
     
-    private final TracingAdviceEngine engine = new TracingAdviceEngine(new AdvisorDefinitionServiceEngine(this));
+    private final TracingAdviceEngine engine = new TracingAdviceEngine(getType());
     
     @Override
     public Collection<ClassAdvisor> getProxyAdvisors() {
diff --git a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinAdvisorDefinitionService.java b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinAdvisorDefinitionService.java
index bc60a381b6b..d8d3bd692ff 100644
--- a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinAdvisorDefinitionService.java
+++ b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/definition/ZipkinAdvisorDefinitionService.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.zipkin.definition;
 
-import org.apache.shardingsphere.agent.core.advisor.AdvisorDefinitionServiceEngine;
+import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingAdviceEngine;
 import org.apache.shardingsphere.agent.plugin.tracing.zipkin.advice.CommandExecutorTaskAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.zipkin.advice.JDBCExecutorCallbackAdvice;
-import org.apache.shardingsphere.agent.advisor.ClassAdvisor;
 import org.apache.shardingsphere.agent.spi.AdvisorDefinitionService;
 
 import java.util.Collection;
@@ -31,7 +30,7 @@ import java.util.Collection;
  */
 public final class ZipkinAdvisorDefinitionService implements AdvisorDefinitionService {
     
-    private final TracingAdviceEngine engine = new TracingAdviceEngine(new AdvisorDefinitionServiceEngine(this));
+    private final TracingAdviceEngine engine = new TracingAdviceEngine(getType());
     
     @Override
     public Collection<ClassAdvisor> getProxyAdvisors() {