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/16 09:11:21 UTC

[shardingsphere] branch master updated: Refactor config package and add MethodAdvisorConfiguration (#22910)

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 19ca29015ab Refactor config package and add MethodAdvisorConfiguration (#22910)
19ca29015ab is described below

commit 19ca29015ab362a4e2832050bdedf57755442c84
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Dec 16 17:11:12 2022 +0800

    Refactor config package and add MethodAdvisorConfiguration (#22910)
    
    * Refactor AdvisorBuilder
    
    * Refactor config package and add MethodAdvisorConfiguration
---
 .../agent/config/advisor/AdvisorConfiguration.java |  3 ++
 .../MethodAdvisorConfiguration.java}               | 24 +++++++----
 .../type}/ConstructorAdvisorConfiguration.java     |  5 ++-
 .../type}/InstanceMethodAdvisorConfiguration.java  |  5 ++-
 .../type}/StaticMethodAdvisorConfiguration.java    |  5 ++-
 .../builder/ConstructorAdvisorBuilder.java         | 45 ++++++++++----------
 .../builder/InstanceMethodAdvisorBuilder.java      | 48 ++++++++++------------
 .../builder/StaticMethodAdvisorBuilder.java        | 43 +++++++++----------
 .../core/transformer/AgentTransformerTest.java     |  6 +--
 .../BaseLoggingAdvisorDefinitionService.java       |  2 +-
 .../PrometheusAdvisorDefinitionService.java        |  6 +--
 .../adviser/impl/CommandExecutorTaskAdviser.java   |  2 +-
 .../adviser/impl/JDBCExecutorCallbackAdviser.java  |  2 +-
 .../adviser/impl/SQLParserEngineAdviser.java       |  2 +-
 14 files changed, 101 insertions(+), 97 deletions(-)

diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/AdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/AdvisorConfiguration.java
index 1d8ee35c19f..378fb0a0678 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/AdvisorConfiguration.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/AdvisorConfiguration.java
@@ -19,6 +19,9 @@ package org.apache.shardingsphere.agent.config.advisor;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.agent.config.advisor.method.type.ConstructorAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
 
 import java.util.Collection;
 import java.util.LinkedList;
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/ConstructorAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/MethodAdvisorConfiguration.java
similarity index 70%
copy from agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/ConstructorAdvisorConfiguration.java
copy to agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/MethodAdvisorConfiguration.java
index 172fb033b6c..b74a44caa8b 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/ConstructorAdvisorConfiguration.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/MethodAdvisorConfiguration.java
@@ -15,21 +15,27 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.config.advisor;
+package org.apache.shardingsphere.agent.config.advisor.method;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import net.bytebuddy.description.method.MethodDescription;
 import net.bytebuddy.matcher.ElementMatcher;
 
 /**
- * Constructor advisor configuration.
+ * Method advisor configuration.
  */
-@RequiredArgsConstructor
-@Getter
-public final class ConstructorAdvisorConfiguration {
+public interface MethodAdvisorConfiguration {
     
-    private final ElementMatcher<? super MethodDescription> pointcut;
+    /**
+     * Get pointcut.
+     * 
+     * @return pointcut
+     */
+    ElementMatcher<? super MethodDescription> getPointcut();
     
-    private final String adviceClassName;
+    /**
+     * Get advice class name.
+     * 
+     * @return advice class name
+     */
+    String getAdviceClassName();
 }
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/ConstructorAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/ConstructorAdvisorConfiguration.java
similarity index 82%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/ConstructorAdvisorConfiguration.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/ConstructorAdvisorConfiguration.java
index 172fb033b6c..cd57f63463b 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/ConstructorAdvisorConfiguration.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/ConstructorAdvisorConfiguration.java
@@ -15,19 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.config.advisor;
+package org.apache.shardingsphere.agent.config.advisor.method.type;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.description.method.MethodDescription;
 import net.bytebuddy.matcher.ElementMatcher;
+import org.apache.shardingsphere.agent.config.advisor.method.MethodAdvisorConfiguration;
 
 /**
  * Constructor advisor configuration.
  */
 @RequiredArgsConstructor
 @Getter
-public final class ConstructorAdvisorConfiguration {
+public final class ConstructorAdvisorConfiguration implements MethodAdvisorConfiguration {
     
     private final ElementMatcher<? super MethodDescription> pointcut;
     
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/InstanceMethodAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/InstanceMethodAdvisorConfiguration.java
similarity index 84%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/InstanceMethodAdvisorConfiguration.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/InstanceMethodAdvisorConfiguration.java
index b44b049571a..a045dbdaee1 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/InstanceMethodAdvisorConfiguration.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/InstanceMethodAdvisorConfiguration.java
@@ -15,19 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.config.advisor;
+package org.apache.shardingsphere.agent.config.advisor.method.type;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.description.method.MethodDescription;
 import net.bytebuddy.matcher.ElementMatcher;
+import org.apache.shardingsphere.agent.config.advisor.method.MethodAdvisorConfiguration;
 
 /**
  * Instance method advisor configuration.
  */
 @RequiredArgsConstructor
 @Getter
-public final class InstanceMethodAdvisorConfiguration {
+public final class InstanceMethodAdvisorConfiguration implements MethodAdvisorConfiguration {
     
     private final ElementMatcher<? super MethodDescription> pointcut;
     
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/StaticMethodAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/StaticMethodAdvisorConfiguration.java
similarity index 85%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/StaticMethodAdvisorConfiguration.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/StaticMethodAdvisorConfiguration.java
index b0747f30738..7da857f88ff 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/StaticMethodAdvisorConfiguration.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/StaticMethodAdvisorConfiguration.java
@@ -15,19 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.config.advisor;
+package org.apache.shardingsphere.agent.config.advisor.method.type;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.description.method.MethodDescription;
 import net.bytebuddy.matcher.ElementMatcher;
+import org.apache.shardingsphere.agent.config.advisor.method.MethodAdvisorConfiguration;
 
 /**
  * Static method advisor configuration.
  */
 @RequiredArgsConstructor
 @Getter
-public final class StaticMethodAdvisorConfiguration {
+public final class StaticMethodAdvisorConfiguration implements MethodAdvisorConfiguration {
     
     private final ElementMatcher<? super MethodDescription> pointcut;
     
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/ConstructorAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/ConstructorAdvisorBuilder.java
index f7c0e534bc6..141c26fb502 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/ConstructorAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/ConstructorAdvisorBuilder.java
@@ -24,7 +24,7 @@ import net.bytebuddy.dynamic.DynamicType.Builder;
 import net.bytebuddy.implementation.MethodDelegation;
 import net.bytebuddy.implementation.SuperMethodCall;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.config.advisor.ConstructorAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.ConstructorAdvisorConfiguration;
 import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
 import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
 import org.apache.shardingsphere.agent.core.plugin.advice.ConstructorAdvice;
@@ -46,15 +46,15 @@ public final class ConstructorAdvisorBuilder {
     
     private static final LoggerFactory.Logger LOGGER = LoggerFactory.getLogger(ConstructorAdvisorBuilder.class);
     
-    private final Collection<ConstructorAdvisorConfiguration> constructorAdvisorConfigs;
+    private final Collection<ConstructorAdvisorConfiguration> advisorConfigs;
     
     private final TypeDescription typePointcut;
     
     private final AdviceFactory adviceFactory;
     
-    public ConstructorAdvisorBuilder(final Map<String, PluginConfiguration> pluginConfigs, final Collection<ConstructorAdvisorConfiguration> constructorAdvisorConfigs,
+    public ConstructorAdvisorBuilder(final Map<String, PluginConfiguration> pluginConfigs, final Collection<ConstructorAdvisorConfiguration> advisorConfigs,
                                      final boolean isEnhancedForProxy, final TypeDescription typePointcut, final ClassLoader classLoader) {
-        this.constructorAdvisorConfigs = constructorAdvisorConfigs;
+        this.advisorConfigs = advisorConfigs;
         this.typePointcut = typePointcut;
         adviceFactory = new AdviceFactory(classLoader, pluginConfigs, isEnhancedForProxy);
     }
@@ -67,12 +67,9 @@ public final class ConstructorAdvisorBuilder {
      */
     public Builder<?> create(final Builder<?> builder) {
         Builder<?> result = builder;
-        Collection<MethodAdvisor<? extends ConstructorInterceptor>> constructorAdvisors = typePointcut.getDeclaredMethods().stream()
-                .filter(MethodDescription::isConstructor)
-                .map(this::getMatchedConstructorAdvisor)
-                .filter(Objects::nonNull)
-                .collect(Collectors.toList());
-        for (MethodAdvisor<? extends ConstructorInterceptor> each : constructorAdvisors) {
+        Collection<MethodAdvisor<?>> matchedAdvisor = typePointcut.getDeclaredMethods()
+                .stream().filter(MethodDescription::isConstructor).map(this::getMatchedAdvisor).filter(Objects::nonNull).collect(Collectors.toList());
+        for (MethodAdvisor<?> each : matchedAdvisor) {
             try {
                 result = result.constructor(ElementMatchers.is(each.getPointcut()))
                         .intercept(SuperMethodCall.INSTANCE.andThen(MethodDelegation.withDefaultConfiguration().to(each.getAdvice())));
@@ -85,20 +82,24 @@ public final class ConstructorAdvisorBuilder {
         return result;
     }
     
-    private MethodAdvisor<? extends ConstructorInterceptor> getMatchedConstructorAdvisor(final InDefinedShape methodPointcut) {
-        List<ConstructorAdvisorConfiguration> matchedConstructorAdvisorConfigs = constructorAdvisorConfigs
-                .stream().filter(each -> each.getPointcut().matches(methodPointcut)).collect(Collectors.toList());
-        if (matchedConstructorAdvisorConfigs.isEmpty()) {
+    private MethodAdvisor<?> getMatchedAdvisor(final InDefinedShape methodPointcut) {
+        List<ConstructorAdvisorConfiguration> matchedAdvisorConfigs = advisorConfigs.stream().filter(each -> each.getPointcut().matches(methodPointcut)).collect(Collectors.toList());
+        if (matchedAdvisorConfigs.isEmpty()) {
             return null;
         }
-        if (1 == matchedConstructorAdvisorConfigs.size()) {
-            return new MethodAdvisor<>(
-                    methodPointcut, new ConstructorInterceptor(adviceFactory.getAdvice(matchedConstructorAdvisorConfigs.get(0).getAdviceClassName())));
+        if (1 == matchedAdvisorConfigs.size()) {
+            return getSingleMethodAdvisor(methodPointcut, matchedAdvisorConfigs);
         }
-        Collection<ConstructorAdvice> constructorAdvices = matchedConstructorAdvisorConfigs.stream()
-                .map(ConstructorAdvisorConfiguration::getAdviceClassName)
-                .map(each -> (ConstructorAdvice) adviceFactory.getAdvice(each))
-                .collect(Collectors.toList());
-        return new MethodAdvisor<>(methodPointcut, new ComposedConstructorInterceptor(constructorAdvices));
+        return getComposedMethodAdvisor(methodPointcut, matchedAdvisorConfigs);
+    }
+    
+    private MethodAdvisor<ConstructorInterceptor> getSingleMethodAdvisor(final InDefinedShape methodPointcut, final List<ConstructorAdvisorConfiguration> matchedAdvisorConfigs) {
+        return new MethodAdvisor<>(methodPointcut, new ConstructorInterceptor(adviceFactory.getAdvice(matchedAdvisorConfigs.get(0).getAdviceClassName())));
+    }
+    
+    private MethodAdvisor<ComposedConstructorInterceptor> getComposedMethodAdvisor(final InDefinedShape methodPointcut, final List<ConstructorAdvisorConfiguration> matchedAdvisorConfigs) {
+        Collection<ConstructorAdvice> advices = matchedAdvisorConfigs
+                .stream().map(ConstructorAdvisorConfiguration::getAdviceClassName).map(each -> (ConstructorAdvice) adviceFactory.getAdvice(each)).collect(Collectors.toList());
+        return new MethodAdvisor<>(methodPointcut, new ComposedConstructorInterceptor(advices));
     }
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/InstanceMethodAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/InstanceMethodAdvisorBuilder.java
index db7e485dc38..bca178da249 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/InstanceMethodAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/InstanceMethodAdvisorBuilder.java
@@ -23,7 +23,7 @@ import net.bytebuddy.dynamic.DynamicType.Builder;
 import net.bytebuddy.implementation.MethodDelegation;
 import net.bytebuddy.implementation.bind.annotation.Morph;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.config.advisor.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
 import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
 import org.apache.shardingsphere.agent.core.plugin.OverrideArgsInvoker;
@@ -49,15 +49,15 @@ public final class InstanceMethodAdvisorBuilder {
     
     private static final LoggerFactory.Logger LOGGER = LoggerFactory.getLogger(InstanceMethodAdvisorBuilder.class);
     
-    private final Collection<InstanceMethodAdvisorConfiguration> instanceMethodAdvisorConfigs;
+    private final Collection<InstanceMethodAdvisorConfiguration> advisorConfigs;
     
     private final TypeDescription typePointcut;
     
     private final AdviceFactory adviceFactory;
     
-    public InstanceMethodAdvisorBuilder(final Map<String, PluginConfiguration> pluginConfigs, final Collection<InstanceMethodAdvisorConfiguration> instanceMethodAdvisorConfigs,
+    public InstanceMethodAdvisorBuilder(final Map<String, PluginConfiguration> pluginConfigs, final Collection<InstanceMethodAdvisorConfiguration> advisorConfigs,
                                         final boolean isEnhancedForProxy, final TypeDescription typePointcut, final ClassLoader classLoader) {
-        this.instanceMethodAdvisorConfigs = instanceMethodAdvisorConfigs;
+        this.advisorConfigs = advisorConfigs;
         this.typePointcut = typePointcut;
         adviceFactory = new AdviceFactory(classLoader, pluginConfigs, isEnhancedForProxy);
     }
@@ -69,13 +69,10 @@ public final class InstanceMethodAdvisorBuilder {
      * @return created builder
      */
     public Builder<?> create(final Builder<?> builder) {
-        Collection<MethodAdvisor<?>> instanceMethodAdviceComposePoints = typePointcut.getDeclaredMethods().stream()
-                .filter(each -> !(each.isAbstract() || each.isSynthetic()))
-                .map(this::getMatchedInstanceMethodPoint)
-                .filter(Objects::nonNull)
-                .collect(Collectors.toList());
         Builder<?> result = builder;
-        for (MethodAdvisor<?> each : instanceMethodAdviceComposePoints) {
+        Collection<MethodAdvisor<?>> matchedAdvisors = typePointcut.getDeclaredMethods()
+                .stream().filter(each -> !(each.isAbstract() || each.isSynthetic())).map(this::getMatchedAdvisor).filter(Objects::nonNull).collect(Collectors.toList());
+        for (MethodAdvisor<?> each : matchedAdvisors) {
             try {
                 if (each.getAdvice() instanceof InstanceMethodInterceptorArgsOverride) {
                     result = result.method(ElementMatchers.is(each.getPointcut()))
@@ -92,29 +89,27 @@ public final class InstanceMethodAdvisorBuilder {
         return result;
     }
     
-    private MethodAdvisor<?> getMatchedInstanceMethodPoint(final InDefinedShape methodPointcut) {
-        List<InstanceMethodAdvisorConfiguration> instanceMethodAdvisorConfigs = this.instanceMethodAdvisorConfigs
-                .stream().filter(each -> each.getPointcut().matches(methodPointcut)).collect(Collectors.toList());
-        if (instanceMethodAdvisorConfigs.isEmpty()) {
+    private MethodAdvisor<?> getMatchedAdvisor(final InDefinedShape methodPointcut) {
+        List<InstanceMethodAdvisorConfiguration> matchedAdvisorConfigs = advisorConfigs.stream().filter(each -> each.getPointcut().matches(methodPointcut)).collect(Collectors.toList());
+        if (matchedAdvisorConfigs.isEmpty()) {
             return null;
         }
-        if (1 == instanceMethodAdvisorConfigs.size()) {
-            return getSingleInstanceMethodPoint(methodPointcut, instanceMethodAdvisorConfigs.get(0));
+        if (1 == matchedAdvisorConfigs.size()) {
+            return getSingleMethodAdvisor(methodPointcut, matchedAdvisorConfigs.get(0));
         }
-        return getComposeInstanceMethodPoint(methodPointcut);
+        return getComposedMethodAdvisor(methodPointcut);
     }
     
-    private MethodAdvisor<?> getSingleInstanceMethodPoint(final InDefinedShape methodPointcut, final InstanceMethodAdvisorConfiguration instanceMethodAdvisorConfig) {
-        InstanceMethodAroundAdvice instanceMethodAroundAdvice = adviceFactory.getAdvice(instanceMethodAdvisorConfig.getAdviceClassName());
-        return instanceMethodAdvisorConfig.isOverrideArgs()
-                ? new MethodAdvisor<>(methodPointcut, new InstanceMethodInterceptorArgsOverride(instanceMethodAroundAdvice))
-                : new MethodAdvisor<>(methodPointcut, new InstanceMethodAroundInterceptor(instanceMethodAroundAdvice));
+    private MethodAdvisor<?> getSingleMethodAdvisor(final InDefinedShape methodPointcut, final InstanceMethodAdvisorConfiguration advisorConfig) {
+        InstanceMethodAroundAdvice instanceMethodAroundAdvice = adviceFactory.getAdvice(advisorConfig.getAdviceClassName());
+        Object advice = advisorConfig.isOverrideArgs() ? new InstanceMethodInterceptorArgsOverride(instanceMethodAroundAdvice) : new InstanceMethodAroundInterceptor(instanceMethodAroundAdvice);
+        return new MethodAdvisor<>(methodPointcut, advice);
     }
     
-    private MethodAdvisor<?> getComposeInstanceMethodPoint(final InDefinedShape methodPointcut) {
+    private MethodAdvisor<?> getComposedMethodAdvisor(final InDefinedShape methodPointcut) {
         Collection<InstanceMethodAroundAdvice> instanceMethodAroundAdvices = new LinkedList<>();
         boolean isArgsOverride = false;
-        for (InstanceMethodAdvisorConfiguration each : instanceMethodAdvisorConfigs) {
+        for (InstanceMethodAdvisorConfiguration each : advisorConfigs) {
             if (each.isOverrideArgs()) {
                 isArgsOverride = true;
             }
@@ -122,8 +117,7 @@ public final class InstanceMethodAdvisorBuilder {
                 instanceMethodAroundAdvices.add(adviceFactory.getAdvice(each.getAdviceClassName()));
             }
         }
-        return isArgsOverride
-                ? new MethodAdvisor<>(methodPointcut, new ComposedInstanceMethodInterceptorArgsOverride(instanceMethodAroundAdvices))
-                : new MethodAdvisor<>(methodPointcut, new ComposedInstanceMethodAroundInterceptor(instanceMethodAroundAdvices));
+        Object advice = isArgsOverride ? new ComposedInstanceMethodInterceptorArgsOverride(instanceMethodAroundAdvices) : new ComposedInstanceMethodAroundInterceptor(instanceMethodAroundAdvices);
+        return new MethodAdvisor<>(methodPointcut, advice);
     }
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/StaticMethodAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/StaticMethodAdvisorBuilder.java
index 17cbb48b997..62003cc9698 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/StaticMethodAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/builder/StaticMethodAdvisorBuilder.java
@@ -23,7 +23,7 @@ import net.bytebuddy.dynamic.DynamicType.Builder;
 import net.bytebuddy.implementation.MethodDelegation;
 import net.bytebuddy.implementation.bind.annotation.Morph;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.config.advisor.StaticMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.config.plugin.PluginConfiguration;
 import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
 import org.apache.shardingsphere.agent.core.plugin.OverrideArgsInvoker;
@@ -49,15 +49,15 @@ public final class StaticMethodAdvisorBuilder {
     
     private static final LoggerFactory.Logger LOGGER = LoggerFactory.getLogger(StaticMethodAdvisorBuilder.class);
     
-    private final Collection<StaticMethodAdvisorConfiguration> staticMethodAdvisorConfigs;
+    private final Collection<StaticMethodAdvisorConfiguration> advisorConfigs;
     
     private final TypeDescription typePointcut;
     
     private final AdviceFactory adviceFactory;
     
-    public StaticMethodAdvisorBuilder(final Map<String, PluginConfiguration> pluginConfigs, final Collection<StaticMethodAdvisorConfiguration> staticMethodAdvisorConfigs,
+    public StaticMethodAdvisorBuilder(final Map<String, PluginConfiguration> pluginConfigs, final Collection<StaticMethodAdvisorConfiguration> advisorConfigs,
                                       final boolean isEnhancedForProxy, final TypeDescription typePointcut, final ClassLoader classLoader) {
-        this.staticMethodAdvisorConfigs = staticMethodAdvisorConfigs;
+        this.advisorConfigs = advisorConfigs;
         this.typePointcut = typePointcut;
         adviceFactory = new AdviceFactory(classLoader, pluginConfigs, isEnhancedForProxy);
     }
@@ -69,13 +69,10 @@ public final class StaticMethodAdvisorBuilder {
      * @return created builder
      */
     public Builder<?> create(final Builder<?> builder) {
-        Collection<MethodAdvisor<?>> staticMethodAdvicePoints = typePointcut.getDeclaredMethods().stream()
-                .filter(each -> each.isStatic() && !(each.isAbstract() || each.isSynthetic()))
-                .map(this::getMatchedStaticMethodPoint)
-                .filter(Objects::nonNull)
-                .collect(Collectors.toList());
         Builder<?> result = builder;
-        for (MethodAdvisor<?> each : staticMethodAdvicePoints) {
+        Collection<MethodAdvisor<?>> matchedAdvisors = typePointcut.getDeclaredMethods()
+                .stream().filter(each -> each.isStatic() && !(each.isAbstract() || each.isSynthetic())).map(this::getMatchedAdvisor).filter(Objects::nonNull).collect(Collectors.toList());
+        for (MethodAdvisor<?> each : matchedAdvisors) {
             try {
                 if (each.getAdvice() instanceof StaticMethodInterceptorArgsOverride) {
                     result = result.method(ElementMatchers.is(each.getPointcut()))
@@ -92,28 +89,28 @@ public final class StaticMethodAdvisorBuilder {
         return result;
     }
     
-    private MethodAdvisor<?> getMatchedStaticMethodPoint(final InDefinedShape methodPointcut) {
-        List<StaticMethodAdvisorConfiguration> matchedAdvisors = staticMethodAdvisorConfigs.stream().filter(each -> each.getPointcut().matches(methodPointcut)).collect(Collectors.toList());
-        if (matchedAdvisors.isEmpty()) {
+    private MethodAdvisor<?> getMatchedAdvisor(final InDefinedShape methodPointcut) {
+        List<StaticMethodAdvisorConfiguration> matchedAdvisorConfigs = advisorConfigs.stream().filter(each -> each.getPointcut().matches(methodPointcut)).collect(Collectors.toList());
+        if (matchedAdvisorConfigs.isEmpty()) {
             return null;
         }
-        if (1 == matchedAdvisors.size()) {
-            return getSingleStaticMethodPoint(methodPointcut, matchedAdvisors.get(0));
+        if (1 == matchedAdvisorConfigs.size()) {
+            return getSingleMethodAdvisor(methodPointcut, matchedAdvisorConfigs.get(0));
         }
-        return getComposedStaticMethodPoint(methodPointcut);
+        return getComposedMethodAdvisor(methodPointcut);
     }
     
-    private MethodAdvisor<?> getSingleStaticMethodPoint(final InDefinedShape methodPointcut, final StaticMethodAdvisorConfiguration staticMethodAdvisorConfig) {
-        StaticMethodAroundAdvice staticMethodAroundAdvice = adviceFactory.getAdvice(staticMethodAdvisorConfig.getAdviceClassName());
-        return staticMethodAdvisorConfig.isOverrideArgs()
+    private MethodAdvisor<?> getSingleMethodAdvisor(final InDefinedShape methodPointcut, final StaticMethodAdvisorConfiguration advisorConfig) {
+        StaticMethodAroundAdvice staticMethodAroundAdvice = adviceFactory.getAdvice(advisorConfig.getAdviceClassName());
+        return advisorConfig.isOverrideArgs()
                 ? new MethodAdvisor<>(methodPointcut, new StaticMethodInterceptorArgsOverride(staticMethodAroundAdvice))
                 : new MethodAdvisor<>(methodPointcut, new StaticMethodAroundInterceptor(staticMethodAroundAdvice));
     }
     
-    private MethodAdvisor<?> getComposedStaticMethodPoint(final InDefinedShape methodPointcut) {
+    private MethodAdvisor<?> getComposedMethodAdvisor(final InDefinedShape methodPointcut) {
         Collection<StaticMethodAroundAdvice> staticMethodAroundAdvices = new LinkedList<>();
         boolean isArgsOverride = false;
-        for (StaticMethodAdvisorConfiguration each : staticMethodAdvisorConfigs) {
+        for (StaticMethodAdvisorConfiguration each : advisorConfigs) {
             if (each.isOverrideArgs()) {
                 isArgsOverride = true;
             }
@@ -121,7 +118,7 @@ public final class StaticMethodAdvisorBuilder {
                 staticMethodAroundAdvices.add(adviceFactory.getAdvice(each.getAdviceClassName()));
             }
         }
-        return isArgsOverride ? new MethodAdvisor<>(methodPointcut, new ComposedStaticMethodInterceptorArgsOverride(staticMethodAroundAdvices))
-                : new MethodAdvisor<>(methodPointcut, new ComposedStaticMethodAroundInterceptor(staticMethodAroundAdvices));
+        Object advice = isArgsOverride ? new ComposedStaticMethodInterceptorArgsOverride(staticMethodAroundAdvices) : new ComposedStaticMethodAroundInterceptor(staticMethodAroundAdvices);
+        return new MethodAdvisor<>(methodPointcut, advice);
     }
 }
diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java
index 01e6476db71..3b7d812df42 100644
--- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java
+++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java
@@ -24,9 +24,9 @@ import net.bytebuddy.agent.builder.ResettableClassFileTransformer;
 import net.bytebuddy.dynamic.scaffold.TypeValidation;
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.ConstructorAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.InstanceMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.StaticMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.ConstructorAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.classloader.AgentClassLoader;
 import org.apache.shardingsphere.agent.core.logging.LoggingListener;
 import org.apache.shardingsphere.agent.core.mock.advice.MockConstructorAdvice;
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 1772ea6fbe0..01b9808303f 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
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.agent.plugin.logging.base.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.StaticMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.plugin.logging.base.advice.MetaDataContextsFactoryAdvice;
 import org.apache.shardingsphere.agent.spi.advisor.AdvisorDefinitionService;
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 9866165be5c..8327161a357 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
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.agent.metrics.prometheus.definition;
 
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.ConstructorAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.InstanceMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.StaticMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.ConstructorAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.core.plugin.yaml.entity.YamlAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.yaml.entity.YamlPointcutConfiguration;
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 d039372b66c..24332a9420a 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
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl;
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
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 ac75c1b1ed4..438bd5ad825 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
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl;
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
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 dfb35259afa..8b28a9989ee 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
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.impl;
 import lombok.RequiredArgsConstructor;
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.config.advisor.AdvisorConfiguration;
-import org.apache.shardingsphere.agent.config.advisor.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;