You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2022/12/16 14:50:38 UTC

[shardingsphere] branch master updated: Refactor MethodAdvisorConfiguration (#22922)

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

jianglongtao 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 6f625cf7826 Refactor MethodAdvisorConfiguration (#22922)
6f625cf7826 is described below

commit 6f625cf78268610bf82bd68b074537d35544c164
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Dec 16 22:50:30 2022 +0800

    Refactor MethodAdvisorConfiguration (#22922)
---
 .../agent/config/advisor/AdvisorConfiguration.java |  9 ++---
 ...ration.java => MethodAdvisorConfiguration.java} |  5 ++-
 .../advisor/method/MethodAdvisorConfiguration.java | 41 ----------------------
 .../type/InstanceMethodAdvisorConfiguration.java   | 36 -------------------
 .../type/StaticMethodAdvisorConfiguration.java     | 36 -------------------
 .../agent/core/transformer/AgentTransformer.java   |  6 ++--
 .../build/MethodAdvisorBuildEngine.java            | 12 +++----
 .../build/builder/MethodAdvisorBuilder.java        | 10 +++---
 .../builder/type/ConstructorAdvisorBuilder.java    | 10 +++---
 .../builder/type/InstanceMethodAdvisorBuilder.java |  8 ++---
 .../builder/type/StaticMethodAdvisorBuilder.java   |  8 ++---
 .../core/transformer/AgentTransformerTest.java     | 14 ++++----
 .../BaseLoggingAdvisorDefinitionService.java       |  4 +--
 .../PrometheusAdvisorDefinitionService.java        | 10 +++---
 .../adviser/impl/CommandExecutorTaskAdviser.java   |  6 ++--
 .../adviser/impl/JDBCExecutorCallbackAdviser.java  |  6 ++--
 .../adviser/impl/SQLParserEngineAdviser.java       |  6 ++--
 17 files changed, 52 insertions(+), 175 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 378fb0a0678..a8e5cc2abe9 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,9 +19,6 @@ 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;
@@ -35,9 +32,9 @@ public final class AdvisorConfiguration {
     
     private final String targetClassName;
     
-    private final Collection<ConstructorAdvisorConfiguration> constructorAdvisors = new LinkedList<>();
+    private final Collection<MethodAdvisorConfiguration> constructorAdvisors = new LinkedList<>();
     
-    private final Collection<InstanceMethodAdvisorConfiguration> instanceMethodAdvisors = new LinkedList<>();
+    private final Collection<MethodAdvisorConfiguration> instanceMethodAdvisors = new LinkedList<>();
     
-    private final Collection<StaticMethodAdvisorConfiguration> staticMethodAdvisors = new LinkedList<>();
+    private final Collection<MethodAdvisorConfiguration> staticMethodAdvisors = new LinkedList<>();
 }
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/ConstructorAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/MethodAdvisorConfiguration.java
similarity index 82%
rename from agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/ConstructorAdvisorConfiguration.java
rename to agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/MethodAdvisorConfiguration.java
index cd57f63463b..5a4a125023a 100644
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/ConstructorAdvisorConfiguration.java
+++ b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/MethodAdvisorConfiguration.java
@@ -15,20 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.config.advisor.method.type;
+package org.apache.shardingsphere.agent.config.advisor;
 
 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 implements MethodAdvisorConfiguration {
+public final class MethodAdvisorConfiguration {
     
     private final ElementMatcher<? super MethodDescription> pointcut;
     
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/MethodAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/MethodAdvisorConfiguration.java
deleted file mode 100644
index b74a44caa8b..00000000000
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/MethodAdvisorConfiguration.java
+++ /dev/null
@@ -1,41 +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.config.advisor.method;
-
-import net.bytebuddy.description.method.MethodDescription;
-import net.bytebuddy.matcher.ElementMatcher;
-
-/**
- * Method advisor configuration.
- */
-public interface MethodAdvisorConfiguration {
-    
-    /**
-     * Get pointcut.
-     * 
-     * @return pointcut
-     */
-    ElementMatcher<? super MethodDescription> getPointcut();
-    
-    /**
-     * Get advice class name.
-     * 
-     * @return advice class name
-     */
-    String getAdviceClassName();
-}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/InstanceMethodAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/InstanceMethodAdvisorConfiguration.java
deleted file mode 100644
index 41dc8a3c13c..00000000000
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/InstanceMethodAdvisorConfiguration.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.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 implements MethodAdvisorConfiguration {
-    
-    private final ElementMatcher<? super MethodDescription> pointcut;
-    
-    private final String adviceClassName;
-}
diff --git a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/StaticMethodAdvisorConfiguration.java b/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/StaticMethodAdvisorConfiguration.java
deleted file mode 100644
index b8be1e9bfb7..00000000000
--- a/agent/api/src/main/java/org/apache/shardingsphere/agent/config/advisor/method/type/StaticMethodAdvisorConfiguration.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.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 implements MethodAdvisorConfiguration {
-    
-    private final ElementMatcher<? super MethodDescription> pointcut;
-    
-    private final String adviceClassName;
-}
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
index 28ef5cdaeed..2d4a80cbcb0 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformer.java
@@ -58,9 +58,9 @@ public final class AgentTransformer implements Transformer {
         Builder<?> result = builder.defineField(EXTRA_DATA, Object.class, Opcodes.ACC_PRIVATE | Opcodes.ACC_VOLATILE).implement(TargetAdviceObject.class).intercept(FieldAccessor.ofField(EXTRA_DATA));
         AdvisorConfiguration advisorConfig = advisorConfigs.get(typeDescription.getTypeName());
         AdviceFactory adviceFactory = new AdviceFactory(classLoader, pluginConfigs, enhanceProxy);
-        result = new MethodAdvisorBuildEngine<>(advisorConfig.getConstructorAdvisors(), typeDescription).create(result, new ConstructorAdvisorBuilder(adviceFactory));
-        result = new MethodAdvisorBuildEngine<>(advisorConfig.getInstanceMethodAdvisors(), typeDescription).create(result, new InstanceMethodAdvisorBuilder(adviceFactory));
-        result = new MethodAdvisorBuildEngine<>(advisorConfig.getStaticMethodAdvisors(), typeDescription).create(result, new StaticMethodAdvisorBuilder(adviceFactory));
+        result = new MethodAdvisorBuildEngine(advisorConfig.getConstructorAdvisors(), typeDescription).create(result, new ConstructorAdvisorBuilder(adviceFactory));
+        result = new MethodAdvisorBuildEngine(advisorConfig.getInstanceMethodAdvisors(), typeDescription).create(result, new InstanceMethodAdvisorBuilder(adviceFactory));
+        result = new MethodAdvisorBuildEngine(advisorConfig.getStaticMethodAdvisors(), typeDescription).create(result, new StaticMethodAdvisorBuilder(adviceFactory));
         return result;
     }
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/MethodAdvisorBuildEngine.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/MethodAdvisorBuildEngine.java
index 563ca9b7e4c..bd88063c269 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/MethodAdvisorBuildEngine.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/MethodAdvisorBuildEngine.java
@@ -21,7 +21,7 @@ import lombok.RequiredArgsConstructor;
 import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
 import net.bytebuddy.description.type.TypeDescription;
 import net.bytebuddy.dynamic.DynamicType.Builder;
-import org.apache.shardingsphere.agent.config.advisor.method.MethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.logging.LoggerFactory;
 import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
 import org.apache.shardingsphere.agent.core.transformer.build.builder.MethodAdvisorBuilder;
@@ -35,11 +35,11 @@ import java.util.stream.Collectors;
  * Method advisor build engine.
  */
 @RequiredArgsConstructor
-public final class MethodAdvisorBuildEngine<T extends MethodAdvisorConfiguration> {
+public final class MethodAdvisorBuildEngine {
     
     private static final LoggerFactory.Logger LOGGER = LoggerFactory.getLogger(MethodAdvisorBuildEngine.class);
     
-    private final Collection<T> advisorConfigs;
+    private final Collection<MethodAdvisorConfiguration> advisorConfigs;
     
     private final TypeDescription typePointcut;
     
@@ -50,7 +50,7 @@ public final class MethodAdvisorBuildEngine<T extends MethodAdvisorConfiguration
      * @param methodAdvisorBuilder method advisor builder
      * @return created builder
      */
-    public Builder<?> create(final Builder<?> builder, final MethodAdvisorBuilder<T> methodAdvisorBuilder) {
+    public Builder<?> create(final Builder<?> builder, final MethodAdvisorBuilder methodAdvisorBuilder) {
         Builder<?> result = builder;
         Collection<MethodAdvisor> matchedAdvisor = typePointcut.getDeclaredMethods().stream()
                 .filter(methodAdvisorBuilder::isMatchedMethod).map(each -> findMatchedAdvisor(each, methodAdvisorBuilder)).filter(Objects::nonNull).collect(Collectors.toList());
@@ -66,8 +66,8 @@ public final class MethodAdvisorBuildEngine<T extends MethodAdvisorConfiguration
         return result;
     }
     
-    private MethodAdvisor findMatchedAdvisor(final InDefinedShape methodDescription, final MethodAdvisorBuilder<T> methodAdvisorBuilder) {
-        List<T> matchedAdvisorConfigs = advisorConfigs.stream().filter(each -> each.getPointcut().matches(methodDescription)).collect(Collectors.toList());
+    private MethodAdvisor findMatchedAdvisor(final InDefinedShape methodDescription, final MethodAdvisorBuilder methodAdvisorBuilder) {
+        List<MethodAdvisorConfiguration> matchedAdvisorConfigs = advisorConfigs.stream().filter(each -> each.getPointcut().matches(methodDescription)).collect(Collectors.toList());
         if (matchedAdvisorConfigs.isEmpty()) {
             return null;
         }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/MethodAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/MethodAdvisorBuilder.java
index 068aba47177..d232e61ccaa 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/MethodAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/MethodAdvisorBuilder.java
@@ -19,17 +19,15 @@ package org.apache.shardingsphere.agent.core.transformer.build.builder;
 
 import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
 import net.bytebuddy.dynamic.DynamicType.Builder;
-import org.apache.shardingsphere.agent.config.advisor.method.MethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.transformer.MethodAdvisor;
 
 import java.util.List;
 
 /**
  * Method advisor builder.
- * 
- * @param <T> type of method advisor configuration
  */
-public interface MethodAdvisorBuilder<T extends MethodAdvisorConfiguration> {
+public interface MethodAdvisorBuilder {
     
     /**
      * Create method advisor builder.
@@ -55,7 +53,7 @@ public interface MethodAdvisorBuilder<T extends MethodAdvisorConfiguration> {
      * @param advisorConfig advisor configuration
      * @return got method advisor
      */
-    MethodAdvisor getSingleMethodAdvisor(InDefinedShape methodDescription, T advisorConfig);
+    MethodAdvisor getSingleMethodAdvisor(InDefinedShape methodDescription, MethodAdvisorConfiguration advisorConfig);
     
     /**
      * Get composed method advisor.
@@ -64,5 +62,5 @@ public interface MethodAdvisorBuilder<T extends MethodAdvisorConfiguration> {
      * @param advisorConfigs advisor configurations
      * @return got method advisor
      */
-    MethodAdvisor getComposedMethodAdvisor(InDefinedShape methodDescription, List<T> advisorConfigs);
+    MethodAdvisor getComposedMethodAdvisor(InDefinedShape methodDescription, List<MethodAdvisorConfiguration> advisorConfigs);
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
index 93f3f75a719..5dcf46f4c26 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/ConstructorAdvisorBuilder.java
@@ -23,7 +23,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.method.type.ConstructorAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advice.ConstructorAdvice;
 import org.apache.shardingsphere.agent.core.plugin.interceptor.ConstructorInterceptor;
 import org.apache.shardingsphere.agent.core.plugin.interceptor.composed.ComposedConstructorInterceptor;
@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
  * Constructor advisor builder.
  */
 @RequiredArgsConstructor
-public final class ConstructorAdvisorBuilder implements MethodAdvisorBuilder<ConstructorAdvisorConfiguration> {
+public final class ConstructorAdvisorBuilder implements MethodAdvisorBuilder {
     
     private final AdviceFactory adviceFactory;
     
@@ -55,14 +55,14 @@ public final class ConstructorAdvisorBuilder implements MethodAdvisorBuilder<Con
     }
     
     @Override
-    public MethodAdvisor getSingleMethodAdvisor(final InDefinedShape methodDescription, final ConstructorAdvisorConfiguration advisorConfig) {
+    public MethodAdvisor getSingleMethodAdvisor(final InDefinedShape methodDescription, final MethodAdvisorConfiguration advisorConfig) {
         return new MethodAdvisor(methodDescription, new ConstructorInterceptor(adviceFactory.getAdvice(advisorConfig.getAdviceClassName())));
     }
     
     @Override
-    public MethodAdvisor getComposedMethodAdvisor(final InDefinedShape methodDescription, final List<ConstructorAdvisorConfiguration> advisorConfigs) {
+    public MethodAdvisor getComposedMethodAdvisor(final InDefinedShape methodDescription, final List<MethodAdvisorConfiguration> advisorConfigs) {
         Collection<ConstructorAdvice> advices = advisorConfigs
-                .stream().map(ConstructorAdvisorConfiguration::getAdviceClassName).map(each -> (ConstructorAdvice) adviceFactory.getAdvice(each)).collect(Collectors.toList());
+                .stream().map(MethodAdvisorConfiguration::getAdviceClassName).map(each -> (ConstructorAdvice) adviceFactory.getAdvice(each)).collect(Collectors.toList());
         return new MethodAdvisor(methodDescription, new ComposedConstructorInterceptor(advices));
     }
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
index a91d5e526bb..d2b06d453cc 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/InstanceMethodAdvisorBuilder.java
@@ -22,7 +22,7 @@ import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
 import net.bytebuddy.dynamic.DynamicType.Builder;
 import net.bytebuddy.implementation.MethodDelegation;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.config.advisor.method.type.InstanceMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
 import org.apache.shardingsphere.agent.core.plugin.interceptor.InstanceMethodAroundInterceptor;
 import org.apache.shardingsphere.agent.core.plugin.interceptor.composed.ComposedInstanceMethodAroundInterceptor;
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
  * Instance method advisor builder.
  */
 @RequiredArgsConstructor
-public final class InstanceMethodAdvisorBuilder implements MethodAdvisorBuilder<InstanceMethodAdvisorConfiguration> {
+public final class InstanceMethodAdvisorBuilder implements MethodAdvisorBuilder {
     
     private final AdviceFactory adviceFactory;
     
@@ -53,12 +53,12 @@ public final class InstanceMethodAdvisorBuilder implements MethodAdvisorBuilder<
     }
     
     @Override
-    public MethodAdvisor getSingleMethodAdvisor(final InDefinedShape methodDescription, final InstanceMethodAdvisorConfiguration advisorConfig) {
+    public MethodAdvisor getSingleMethodAdvisor(final InDefinedShape methodDescription, final MethodAdvisorConfiguration advisorConfig) {
         return new MethodAdvisor(methodDescription, new InstanceMethodAroundInterceptor(adviceFactory.getAdvice(advisorConfig.getAdviceClassName())));
     }
     
     @Override
-    public MethodAdvisor getComposedMethodAdvisor(final InDefinedShape methodDescription, final List<InstanceMethodAdvisorConfiguration> advisorConfigs) {
+    public MethodAdvisor getComposedMethodAdvisor(final InDefinedShape methodDescription, final List<MethodAdvisorConfiguration> advisorConfigs) {
         Collection<InstanceMethodAroundAdvice> advices = advisorConfigs
                 .stream().<InstanceMethodAroundAdvice>map(each -> adviceFactory.getAdvice(each.getAdviceClassName())).collect(Collectors.toList());
         return new MethodAdvisor(methodDescription, new ComposedInstanceMethodAroundInterceptor(advices));
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
index 58a372a0543..37df7586cea 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/transformer/build/builder/type/StaticMethodAdvisorBuilder.java
@@ -22,7 +22,7 @@ import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
 import net.bytebuddy.dynamic.DynamicType.Builder;
 import net.bytebuddy.implementation.MethodDelegation;
 import net.bytebuddy.matcher.ElementMatchers;
-import org.apache.shardingsphere.agent.config.advisor.method.type.StaticMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advice.StaticMethodAroundAdvice;
 import org.apache.shardingsphere.agent.core.plugin.interceptor.StaticMethodAroundInterceptor;
 import org.apache.shardingsphere.agent.core.plugin.interceptor.composed.ComposedStaticMethodAroundInterceptor;
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
  * Static method advisor builder.
  */
 @RequiredArgsConstructor
-public final class StaticMethodAdvisorBuilder implements MethodAdvisorBuilder<StaticMethodAdvisorConfiguration> {
+public final class StaticMethodAdvisorBuilder implements MethodAdvisorBuilder {
     
     private final AdviceFactory adviceFactory;
     
@@ -53,12 +53,12 @@ public final class StaticMethodAdvisorBuilder implements MethodAdvisorBuilder<St
     }
     
     @Override
-    public MethodAdvisor getSingleMethodAdvisor(final InDefinedShape methodDescription, final StaticMethodAdvisorConfiguration advisorConfig) {
+    public MethodAdvisor getSingleMethodAdvisor(final InDefinedShape methodDescription, final MethodAdvisorConfiguration advisorConfig) {
         return new MethodAdvisor(methodDescription, new StaticMethodAroundInterceptor(adviceFactory.getAdvice(advisorConfig.getAdviceClassName())));
     }
     
     @Override
-    public MethodAdvisor getComposedMethodAdvisor(final InDefinedShape methodDescription, final List<StaticMethodAdvisorConfiguration> advisorConfigs) {
+    public MethodAdvisor getComposedMethodAdvisor(final InDefinedShape methodDescription, final List<MethodAdvisorConfiguration> advisorConfigs) {
         Collection<StaticMethodAroundAdvice> advices = advisorConfigs.stream().<StaticMethodAroundAdvice>map(each -> adviceFactory.getAdvice(each.getAdviceClassName())).collect(Collectors.toList());
         return new MethodAdvisor(methodDescription, new ComposedStaticMethodAroundInterceptor(advices));
     }
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 3b7d812df42..ea7c6626513 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,7 @@ 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.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.config.advisor.MethodAdvisorConfiguration;
 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;
@@ -78,16 +76,16 @@ public final class AgentTransformerTest {
     
     private static AdvisorConfiguration createAdvisorConfiguration() {
         AdvisorConfiguration result = new AdvisorConfiguration("org.apache.shardingsphere.agent.core.mock.material.Material");
-        result.getConstructorAdvisors().add(new ConstructorAdvisorConfiguration(ElementMatchers.takesArguments(1), MockConstructorAdvice.class.getTypeName()));
-        result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
-        result.getStaticMethodAdvisors().add(new StaticMethodAdvisorConfiguration(ElementMatchers.named("staticMock"), MockStaticMethodAroundAdvice.class.getTypeName()));
+        result.getConstructorAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.takesArguments(1), MockConstructorAdvice.class.getTypeName()));
+        result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
+        result.getStaticMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.named("staticMock"), MockStaticMethodAroundAdvice.class.getTypeName()));
         return result;
     }
     
     private static AdvisorConfiguration createAdvisorConfigurationInTwice() {
         AdvisorConfiguration result = new AdvisorConfiguration("org.apache.shardingsphere.agent.core.mock.material.RepeatedAdviceMaterial");
-        result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
-        result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(ElementMatchers.named("mock"), MockInstanceMethodAroundRepeatedAdvice.class.getTypeName()));
+        result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.named("mock"), MockInstanceMethodAroundAdvice.class.getTypeName()));
+        result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.named("mock"), MockInstanceMethodAroundRepeatedAdvice.class.getTypeName()));
         return result;
     }
     
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 01b9808303f..9ea2aebc250 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.method.type.StaticMethodAdvisorConfiguration;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 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;
@@ -52,7 +52,7 @@ public final class BaseLoggingAdvisorDefinitionService implements AdvisorDefinit
         Collection<AdvisorConfiguration> result = new LinkedList<>();
         AdvisorConfiguration advisorConfig = AdvisorConfigurationRegistryFactory.getRegistry(getType()).getAdvisorConfiguration(SCHEMA_METADATA_LOADER_CLASS);
         advisorConfig.getStaticMethodAdvisors().add(
-                new StaticMethodAdvisorConfiguration(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)), SCHEMA_METADATA_LOADER_ADVICE_CLASS));
+                new MethodAdvisorConfiguration(ElementMatchers.named(SCHEMA_METADATA_LOADER_METHOD_NAME).and(ElementMatchers.takesArguments(4)), SCHEMA_METADATA_LOADER_ADVICE_CLASS));
         result.add(advisorConfig);
         return result;
     }
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 8327161a357..9b9e220e274 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,7 @@ 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.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.config.advisor.MethodAdvisorConfiguration;
 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;
@@ -51,15 +49,15 @@ public final class PrometheusAdvisorDefinitionService implements AdvisorDefiniti
     private AdvisorConfiguration createAdvisorConfiguration(final YamlAdvisorConfiguration yamlAdvisorConfig) {
         AdvisorConfiguration result = AdvisorConfigurationRegistryFactory.getRegistry(getType()).getAdvisorConfiguration(yamlAdvisorConfig.getTarget());
         if (null != yamlAdvisorConfig.getConstructAdvice() && !("".equals(yamlAdvisorConfig.getConstructAdvice()))) {
-            result.getConstructorAdvisors().add(new ConstructorAdvisorConfiguration(ElementMatchers.isConstructor(), yamlAdvisorConfig.getConstructAdvice()));
+            result.getConstructorAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.isConstructor(), yamlAdvisorConfig.getConstructAdvice()));
         }
         String[] instancePointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(i -> "instance".equals(i.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new);
         if (instancePointcuts.length > 0) {
-            result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(ElementMatchers.namedOneOf(instancePointcuts), yamlAdvisorConfig.getInstanceAdvice()));
+            result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(instancePointcuts), yamlAdvisorConfig.getInstanceAdvice()));
         }
         String[] staticPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(i -> "static".equals(i.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new);
         if (staticPointcuts.length > 0) {
-            result.getStaticMethodAdvisors().add(new StaticMethodAdvisorConfiguration(ElementMatchers.namedOneOf(staticPointcuts), yamlAdvisorConfig.getStaticAdvice()));
+            result.getStaticMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(staticPointcuts), yamlAdvisorConfig.getStaticAdvice()));
         }
         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 24332a9420a..9b6f628589b 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,9 +20,9 @@ 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.method.type.InstanceMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 
 /**
@@ -40,7 +40,7 @@ public final class CommandExecutorTaskAdviser implements TracingAdviser {
     @Override
     public AdvisorConfiguration getAdvisorConfiguration(final Class<? extends InstanceMethodAroundAdvice> commandExecutorTaskAdvice) {
         AdvisorConfiguration result = AdvisorConfigurationRegistryFactory.getRegistry(type).getAdvisorConfiguration(TARGET_CLASS);
-        result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(ElementMatchers.named(TARGET_METHOD), commandExecutorTaskAdvice.getName()));
+        result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(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 438bd5ad825..08d8e47d172 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,9 +20,9 @@ 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.method.type.InstanceMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 
 /**
@@ -42,7 +42,7 @@ public final class JDBCExecutorCallbackAdviser implements TracingAdviser {
     @Override
     public AdvisorConfiguration getAdvisorConfiguration(final Class<? extends InstanceMethodAroundAdvice> jdbcExecutorCallbackAdvice) {
         AdvisorConfiguration result = AdvisorConfigurationRegistryFactory.getRegistry(type).getAdvisorConfiguration(TARGET_CLASS);
-        result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(
+        result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(
                 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 8b28a9989ee..d6c60cbdec9 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,9 +20,9 @@ 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.method.type.InstanceMethodAdvisorConfiguration;
-import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
+import org.apache.shardingsphere.agent.config.advisor.MethodAdvisorConfiguration;
 import org.apache.shardingsphere.agent.core.plugin.advice.InstanceMethodAroundAdvice;
+import org.apache.shardingsphere.agent.core.plugin.advisor.AdvisorConfigurationRegistryFactory;
 import org.apache.shardingsphere.agent.plugin.tracing.core.advice.adviser.TracingAdviser;
 
 /**
@@ -40,7 +40,7 @@ public final class SQLParserEngineAdviser implements TracingAdviser {
     @Override
     public AdvisorConfiguration getAdvisorConfiguration(final Class<? extends InstanceMethodAroundAdvice> sqlParserEngineAdvice) {
         AdvisorConfiguration result = AdvisorConfigurationRegistryFactory.getRegistry(type).getAdvisorConfiguration(TARGET_CLASS);
-        result.getInstanceMethodAdvisors().add(new InstanceMethodAdvisorConfiguration(ElementMatchers.named(TARGET_METHOD), sqlParserEngineAdvice.getName()));
+        result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.named(TARGET_METHOD), sqlParserEngineAdvice.getName()));
         return result;
     }
 }