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 2a48c6a64ce Optimize advice avoid test errors caused by mock 
java.lang.reflect.Method (#32603)
2a48c6a64ce is described below

commit 2a48c6a64ce3e892d1ed1c49b70503bf84039907
Author: jiangML <1060319...@qq.com>
AuthorDate: Wed Aug 21 10:38:34 2024 +0800

    Optimize advice avoid test errors caused by mock java.lang.reflect.Method 
(#32603)
    
    * Optimize advice avoid test errors caused by mock java.lang.reflect.Method
    
    * Add java doc for TargetAdviceMethod
---
 .../agent/api/advice/TargetAdviceMethod.java       | 31 ++++++++++++++++++++++
 .../api/advice/type/InstanceMethodAdvice.java      |  9 +++----
 .../agent/api/advice/type/StaticMethodAdvice.java  |  9 +++----
 .../type/InstanceMethodAdviceExecutor.java         |  7 ++---
 .../executor/type/StaticMethodAdviceExecutor.java  |  7 ++---
 .../shardingsphere/fixture/advice/BarAdvice.java   | 14 +++++-----
 .../shardingsphere/fixture/advice/FooAdvice.java   | 14 +++++-----
 .../plugin/core/recorder/MethodTimeRecorder.java   |  8 +++---
 .../core/recorder/MethodTimeRecorderTest.java      |  9 ++++---
 .../file/advice/MetaDataContextsFactoryAdvice.java |  7 +++--
 .../advice/MetaDataContextsFactoryAdviceTest.java  |  4 +--
 .../core/advice/RouteResultCountAdvice.java        |  4 +--
 .../metrics/core/advice/SQLParseCountAdvice.java   |  4 +--
 .../metrics/core/advice/SQLRouteCountAdvice.java   |  4 +--
 .../advice/jdbc/AbstractExecuteCountAdvice.java    |  4 +--
 .../jdbc/AbstractExecuteErrorsCountAdvice.java     |  4 +--
 .../AbstractExecuteLatencyHistogramAdvice.java     |  6 ++---
 .../jdbc/AbstractTransactionsCountAdvice.java      |  4 +--
 .../jdbc/ShardingSphereDataSourceAdvice.java       |  7 +++--
 .../proxy/CommitTransactionsCountAdvice.java       |  4 +--
 .../proxy/CurrentConnectionsCountAdvice.java       |  4 +--
 .../advice/proxy/ExecuteErrorsCountAdvice.java     |  4 +--
 .../proxy/ExecuteLatencyHistogramAdvice.java       |  6 ++---
 .../core/advice/proxy/RequestsCountAdvice.java     |  4 +--
 .../proxy/RollbackTransactionsCountAdvice.java     |  4 +--
 .../core/advice/RouteResultCountAdviceTest.java    |  4 +--
 .../core/advice/SQLParseCountAdviceTest.java       |  4 +--
 .../core/advice/SQLRouteCountAdviceTest.java       |  4 +--
 .../jdbc/AbstractExecuteCountAdviceTest.java       |  8 +++---
 .../jdbc/AbstractExecuteErrorsCountAdviceTest.java |  8 +++---
 .../AbstractExecuteLatencyHistogramAdviceTest.java |  8 +++---
 .../jdbc/AbstractTransactionsCountAdviceTest.java  |  8 +++---
 .../jdbc/ShardingSphereDataSourceAdviceTest.java   |  7 +++--
 .../proxy/CommitTransactionsCountAdviceTest.java   |  6 ++---
 .../proxy/CurrentConnectionsCountAdviceTest.java   |  8 +++---
 .../advice/proxy/ExecuteErrorsCountAdviceTest.java |  4 +--
 .../proxy/ExecuteLatencyHistogramAdviceTest.java   |  6 ++---
 .../core/advice/proxy/RequestsCountAdviceTest.java |  4 +--
 .../proxy/RollbackTransactionsCountAdviceTest.java |  4 +--
 .../advice/TracingJDBCExecutorCallbackAdvice.java  |  5 ++--
 .../tracing/core/advice/TracingRootSpanAdvice.java | 11 ++++----
 .../core/advice/TracingSQLParserEngineAdvice.java  |  5 ++--
 .../OpenTelemetryJDBCExecutorCallbackAdvice.java   |  7 +++--
 .../advice/OpenTelemetryRootSpanAdvice.java        |  5 ++--
 .../advice/OpenTelemetrySQLParserEngineAdvice.java |  7 +++--
 45 files changed, 165 insertions(+), 140 deletions(-)

diff --git 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/TargetAdviceMethod.java
 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/TargetAdviceMethod.java
new file mode 100644
index 00000000000..60b61c5759d
--- /dev/null
+++ 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/TargetAdviceMethod.java
@@ -0,0 +1,31 @@
+/*
+ * 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.api.advice;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * Target advice method.
+ */
+@RequiredArgsConstructor
+@Getter
+public final class TargetAdviceMethod {
+    
+    private final String name;
+}
diff --git 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
index 9bd880a9f14..49a775b9d5e 100644
--- 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
+++ 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
@@ -17,11 +17,10 @@
 
 package org.apache.shardingsphere.agent.api.advice.type;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.AgentAdvice;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 
-import java.lang.reflect.Method;
-
 /**
  * Instance method advice.
  */
@@ -36,7 +35,7 @@ public interface InstanceMethodAdvice extends AgentAdvice {
      * @param args all method arguments
      * @param pluginType plugin type
      */
-    default void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, String pluginType) {
+    default void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, String pluginType) {
     }
     
     /**
@@ -49,7 +48,7 @@ public interface InstanceMethodAdvice extends AgentAdvice {
      * @param result original call result
      * @param pluginType plugin type
      */
-    default void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, String pluginType) {
+    default void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, String 
pluginType) {
     }
     
     /**
@@ -61,6 +60,6 @@ public interface InstanceMethodAdvice extends AgentAdvice {
      * @param throwable exception from target method
      * @param pluginType plugin type
      */
-    default void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, String pluginType) {
+    default void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
String pluginType) {
     }
 }
diff --git 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
index 5b0c6c25d2b..7a9ed84bfbd 100644
--- 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
+++ 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
@@ -17,10 +17,9 @@
 
 package org.apache.shardingsphere.agent.api.advice.type;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.AgentAdvice;
 
-import java.lang.reflect.Method;
-
 /**
  * Static method advice.
  */
@@ -35,7 +34,7 @@ public interface StaticMethodAdvice extends AgentAdvice {
      * @param args all method arguments
      * @param pluginType plugin type
      */
-    default void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, String pluginType) {
+    default void beforeMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, String pluginType) {
     }
     
     /**
@@ -48,7 +47,7 @@ public interface StaticMethodAdvice extends AgentAdvice {
      * @param result original call result
      * @param pluginType plugin type
      */
-    default void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, String pluginType) {
+    default void afterMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Object result, String pluginType) {
     }
     
     /**
@@ -60,6 +59,6 @@ public interface StaticMethodAdvice extends AgentAdvice {
      * @param throwable exception from target method
      * @param pluginType plugin type
      */
-    default void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, String pluginType) {
+    default void onThrowing(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Throwable throwable, String pluginType) {
     }
 }
diff --git 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
index 9fff440ddfc..49cba660418 100644
--- 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
+++ 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
@@ -28,6 +28,7 @@ import 
net.bytebuddy.implementation.bind.annotation.RuntimeType;
 import net.bytebuddy.implementation.bind.annotation.SuperCall;
 import net.bytebuddy.implementation.bind.annotation.This;
 import net.bytebuddy.matcher.ElementMatchers;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.plugin.AgentPluginEnable;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
@@ -83,7 +84,7 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
             for (Entry<String, Collection<InstanceMethodAdvice>> entry : 
advices.entrySet()) {
                 for (InstanceMethodAdvice each : entry.getValue()) {
                     if (isPluginEnabled(each)) {
-                        each.beforeMethod(target, method, args, 
entry.getKey());
+                        each.beforeMethod(target, new 
TargetAdviceMethod(method.getName()), args, entry.getKey());
                     }
                 }
             }
@@ -99,7 +100,7 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
             for (Entry<String, Collection<InstanceMethodAdvice>> entry : 
advices.entrySet()) {
                 for (InstanceMethodAdvice each : entry.getValue()) {
                     if (isPluginEnabled(each)) {
-                        each.onThrowing(target, method, args, ex, 
entry.getKey());
+                        each.onThrowing(target, new 
TargetAdviceMethod(method.getName()), args, ex, entry.getKey());
                     }
                 }
             }
@@ -115,7 +116,7 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
             for (Entry<String, Collection<InstanceMethodAdvice>> entry : 
advices.entrySet()) {
                 for (InstanceMethodAdvice each : entry.getValue()) {
                     if (isPluginEnabled(each)) {
-                        each.afterMethod(target, method, args, result, 
entry.getKey());
+                        each.afterMethod(target, new 
TargetAdviceMethod(method.getName()), args, result, entry.getKey());
                     }
                 }
             }
diff --git 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
index 3e7182ed319..c3e7d717628 100644
--- 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
+++ 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
@@ -27,6 +27,7 @@ import net.bytebuddy.implementation.bind.annotation.Origin;
 import net.bytebuddy.implementation.bind.annotation.RuntimeType;
 import net.bytebuddy.implementation.bind.annotation.SuperCall;
 import net.bytebuddy.matcher.ElementMatchers;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.plugin.AgentPluginEnable;
 import org.apache.shardingsphere.agent.api.advice.type.StaticMethodAdvice;
 import org.apache.shardingsphere.agent.core.advisor.executor.AdviceExecutor;
@@ -81,7 +82,7 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
             for (Entry<String, Collection<StaticMethodAdvice>> entry : 
advices.entrySet()) {
                 for (StaticMethodAdvice each : entry.getValue()) {
                     if (isPluginEnabled(each)) {
-                        each.beforeMethod(klass, method, args, entry.getKey());
+                        each.beforeMethod(klass, new 
TargetAdviceMethod(method.getName()), args, entry.getKey());
                     }
                 }
             }
@@ -97,7 +98,7 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
             for (Entry<String, Collection<StaticMethodAdvice>> entry : 
advices.entrySet()) {
                 for (StaticMethodAdvice each : entry.getValue()) {
                     if (isPluginEnabled(each)) {
-                        each.onThrowing(klass, method, args, ex, 
entry.getKey());
+                        each.onThrowing(klass, new 
TargetAdviceMethod(method.getName()), args, ex, entry.getKey());
                     }
                 }
             }
@@ -113,7 +114,7 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
             for (Entry<String, Collection<StaticMethodAdvice>> entry : 
advices.entrySet()) {
                 for (StaticMethodAdvice each : entry.getValue()) {
                     if (isPluginEnabled(each)) {
-                        each.afterMethod(klass, method, args, result, 
entry.getKey());
+                        each.afterMethod(klass, new 
TargetAdviceMethod(method.getName()), args, result, entry.getKey());
                     }
                 }
             }
diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
index 87cbf574d7a..d61297197c8 100644
--- 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.fixture.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.ConstructorAdvice;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
 import org.apache.shardingsphere.agent.api.advice.type.StaticMethodAdvice;
 
-import java.lang.reflect.Method;
 import java.util.List;
 
 @SuppressWarnings("unchecked")
@@ -34,37 +34,37 @@ public final class BarAdvice implements ConstructorAdvice, 
InstanceMethodAdvice,
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar before instance method");
     }
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
+    public void beforeMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar before static method");
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar after instance method");
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Object result, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar after static method");
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
+    public void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar throw instance method exception");
     }
     
     @Override
-    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, final String pluginType) {
+    public void onThrowing(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar throw static method exception");
     }
diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
index 04baee22f7f..23e53faa7ad 100644
--- 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.fixture.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.ConstructorAdvice;
 import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
 import org.apache.shardingsphere.agent.api.advice.type.StaticMethodAdvice;
 
-import java.lang.reflect.Method;
 import java.util.List;
 
 @SuppressWarnings("unchecked")
@@ -34,37 +34,37 @@ public final class FooAdvice implements ConstructorAdvice, 
InstanceMethodAdvice,
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo before instance method");
     }
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
+    public void beforeMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo before static method");
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo after instance method");
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Object result, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo after static method");
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
+    public void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo throw instance method exception");
     }
     
     @Override
-    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, final String pluginType) {
+    public void onThrowing(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo throw static method exception");
     }
diff --git 
a/agent/plugins/core/src/main/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorder.java
 
b/agent/plugins/core/src/main/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorder.java
index fa1c713bcf0..eb0192c4ae7 100644
--- 
a/agent/plugins/core/src/main/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorder.java
+++ 
b/agent/plugins/core/src/main/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorder.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.agent.plugin.core.recorder;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.agent.api.advice.AgentAdvice;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 
-import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -39,7 +39,7 @@ public final class MethodTimeRecorder {
      *
      * @param method method to be recorded
      */
-    public void recordNow(final Method method) {
+    public void recordNow(final TargetAdviceMethod method) {
         CURRENT_RECORDER.get().put(getKey(method), System.currentTimeMillis());
     }
     
@@ -49,7 +49,7 @@ public final class MethodTimeRecorder {
      * @param method method to be recorded
      * @return elapsed time
      */
-    public long getElapsedTimeAndClean(final Method method) {
+    public long getElapsedTimeAndClean(final TargetAdviceMethod method) {
         String key = getKey(method);
         try {
             return getElapsedTime(key);
@@ -58,7 +58,7 @@ public final class MethodTimeRecorder {
         }
     }
     
-    private String getKey(final Method method) {
+    private String getKey(final TargetAdviceMethod method) {
         return String.format("%s@%s", adviceClass.getName(), method.getName());
     }
     
diff --git 
a/agent/plugins/core/src/test/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorderTest.java
 
b/agent/plugins/core/src/test/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorderTest.java
index e6bc3732c6d..fcb931ac297 100644
--- 
a/agent/plugins/core/src/test/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorderTest.java
+++ 
b/agent/plugins/core/src/test/java/org/apache/shardingsphere/agent/plugin/core/recorder/MethodTimeRecorderTest.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.agent.plugin.core.recorder;
 
 import org.apache.shardingsphere.agent.api.advice.AgentAdvice;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
 
@@ -32,13 +33,15 @@ class MethodTimeRecorderTest {
     @Test
     void assertGetElapsedTimeAndCleanWithRecorded() throws 
NoSuchMethodException {
         MethodTimeRecorder methodTimeRecorder = new 
MethodTimeRecorder(AgentAdvice.class);
-        
methodTimeRecorder.recordNow(Object.class.getDeclaredMethod("toString"));
+        TargetAdviceMethod method = new TargetAdviceMethod("test");
+        methodTimeRecorder.recordNow(method);
         Awaitility.await().pollDelay(5L, TimeUnit.MILLISECONDS).until(() -> 
true);
-        
assertThat(methodTimeRecorder.getElapsedTimeAndClean(Object.class.getDeclaredMethod("toString")),
 greaterThanOrEqualTo(5L));
+        assertThat(methodTimeRecorder.getElapsedTimeAndClean(method), 
greaterThanOrEqualTo(5L));
     }
     
     @Test
     void assertGetElapsedTimeAndCleanWithoutRecorded() throws 
NoSuchMethodException {
-        assertThat(new 
MethodTimeRecorder(AgentAdvice.class).getElapsedTimeAndClean(Object.class.getDeclaredMethod("toString")),
 is(0L));
+        TargetAdviceMethod method = new TargetAdviceMethod("test");
+        assertThat(new 
MethodTimeRecorder(AgentAdvice.class).getElapsedTimeAndClean(method), is(0L));
     }
 }
diff --git 
a/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
 
b/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
index 159624b5f78..d1fbef261c9 100644
--- 
a/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
+++ 
b/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
@@ -18,11 +18,10 @@
 package org.apache.shardingsphere.agent.plugin.logging.file.advice;
 
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractStaticMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.recorder.MethodTimeRecorder;
 
-import java.lang.reflect.Method;
-
 /**
  * Meta data contexts factory advice.
  */
@@ -32,12 +31,12 @@ public final class MetaDataContextsFactoryAdvice extends 
AbstractStaticMethodAdv
     private final MethodTimeRecorder methodTimeRecorder = new 
MethodTimeRecorder(MetaDataContextsFactoryAdvice.class);
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
+    public void beforeMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final String pluginType) {
         methodTimeRecorder.recordNow(method);
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final Class<?> clazz, final TargetAdviceMethod 
method, final Object[] args, final Object result, final String pluginType) {
         log.info("Build meta data contexts finished, cost {} milliseconds.", 
methodTimeRecorder.getElapsedTimeAndClean(method));
     }
 }
diff --git 
a/agent/plugins/logging/type/file/src/test/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdviceTest.java
 
b/agent/plugins/logging/type/file/src/test/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdviceTest.java
index 38e2236aa2b..c8fb1e46f3e 100644
--- 
a/agent/plugins/logging/type/file/src/test/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdviceTest.java
+++ 
b/agent/plugins/logging/type/file/src/test/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdviceTest.java
@@ -21,11 +21,11 @@ import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.slf4j.LoggerFactory;
 
-import java.lang.reflect.Method;
 import java.util.List;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -48,7 +48,7 @@ class MetaDataContextsFactoryAdviceTest {
     @Test
     void assertLog() {
         MetaDataContextsFactoryAdvice advice = new 
MetaDataContextsFactoryAdvice();
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         advice.beforeMethod(null, method, new Object[]{}, "FIXTURE");
         advice.afterMethod(null, method, new Object[]{}, null, "FIXTURE");
         List<ILoggingEvent> logsList = listAppender.list;
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
index bb995a0d913..548b0af20c3 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -26,7 +27,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfigur
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 
-import java.lang.reflect.Method;
 import java.util.Arrays;
 
 /**
@@ -38,7 +38,7 @@ public final class RouteResultCountAdvice extends 
AbstractInstanceMethodAdvice {
             MetricCollectorType.COUNTER, "Total count of routed result", 
Arrays.asList("object", "name"));
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         if (null == result) {
             return;
         }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
index 1182c6df766..18e69fbe72d 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.util.SQLStatementUtils;
@@ -26,7 +27,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollecto
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.Optional;
 
@@ -39,7 +39,7 @@ public final class SQLParseCountAdvice extends 
AbstractInstanceMethodAdvice {
             MetricCollectorType.COUNTER, "Total count of parsed SQL", 
Collections.singletonList("type"), Collections.emptyMap());
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         getSQLType((SQLStatement) result).ifPresent(optional -> 
MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc(optional));
     }
     
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
index a2991d9267d..3eeba05475f 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.util.SQLStatementUtils;
@@ -27,7 +28,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfigur
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.Optional;
 
@@ -40,7 +40,7 @@ public final class SQLRouteCountAdvice extends 
AbstractInstanceMethodAdvice {
             MetricCollectorType.COUNTER, "Total count of routed SQL", 
Collections.singletonList("type"), Collections.emptyMap());
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         QueryContext queryContext = (QueryContext) args[1];
         SQLStatement sqlStatement = 
queryContext.getSqlStatementContext().getSqlStatement();
         getSQLType(sqlStatement).ifPresent(optional -> 
MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc(optional));
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdvice.java
index 3cc70c46bfd..77d1de45ee2 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public abstract class AbstractExecuteCountAdvice extends 
AbstractInstanceMethodA
             "Total number of statement execute", 
Collections.singletonList("statement_type"));
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc(getStatementType());
     }
     
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdvice.java
index 3ec1523148d..836329e430e 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public abstract class AbstractExecuteErrorsCountAdvice 
extends AbstractInstanceM
             "Total number of statement execute error", 
Collections.singletonList("statement_type"));
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
+    public void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
final String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc(getStatementType());
     }
     
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdvice.java
index 06ca179d1d3..88cfc452305 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.recorder.MethodTimeRecorder;
@@ -25,7 +26,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Histog
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -48,12 +48,12 @@ public abstract class AbstractExecuteLatencyHistogramAdvice 
extends AbstractInst
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         getMethodTimeRecorder().recordNow(method);
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         MetricsCollectorRegistry.<HistogramMetricsCollector>get(config, 
pluginType).observe(getMethodTimeRecorder().getElapsedTimeAndClean(method));
     }
     
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdvice.java
index f74abc52a9a..b02f81ea602 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public abstract class AbstractTransactionsCountAdvice extends 
AbstractInstanceMe
             "Total transactions of ShardingSphere-JDBC", 
Collections.singletonList("type"));
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc(getTransactionType());
     }
     
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdvice.java
index b7dada861c3..04bda4dcf28 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdvice.java
@@ -17,28 +17,27 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.holder.ContextManagerHolder;
 import org.apache.shardingsphere.agent.plugin.core.util.AgentReflectionUtils;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 
-import java.lang.reflect.Method;
-
 /**
  * ShardingSphere data source advice.
  */
 public final class ShardingSphereDataSourceAdvice extends 
AbstractInstanceMethodAdvice {
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         if ("close".equals(method.getName())) {
             ContextManagerHolder.remove(getDatabaseName(target));
         }
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         if ("createContextManager".equals(method.getName())) {
             ContextManagerHolder.put(getDatabaseName(target), (ContextManager) 
result);
         }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
index a7c20d09c47..8b790da26fd 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public final class CommitTransactionsCountAdvice extends 
AbstractInstanceMethodA
             MetricCollectorType.COUNTER, "Total transactions of 
ShardingSphere-Proxy", Collections.singletonList("type"), 
Collections.emptyMap());
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc("commit");
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
index 3aad6ce0b02..107ccd26140 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.GaugeM
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public final class CurrentConnectionsCountAdvice extends 
AbstractInstanceMethodA
             MetricCollectorType.GAUGE, "Current connections of 
ShardingSphere-Proxy", Collections.emptyList(), Collections.emptyMap());
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         switch (method.getName()) {
             case "channelActive":
                 MetricsCollectorRegistry.<GaugeMetricsCollector>get(config, 
pluginType).inc();
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
index 64a21d65919..374bd8b1a1d 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public final class ExecuteErrorsCountAdvice extends 
AbstractInstanceMethodAdvice
             "proxy_execute_errors_total", MetricCollectorType.COUNTER, "Total 
execute errors of ShardingSphere-Proxy", Collections.emptyList(), 
Collections.emptyMap());
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc();
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
index 55697a60253..fb666e92917 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.recorder.MethodTimeRecorder;
@@ -26,7 +27,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollecto
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 import 
org.apache.shardingsphere.proxy.frontend.command.executor.QueryCommandExecutor;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -51,14 +51,14 @@ public final class ExecuteLatencyHistogramAdvice extends 
AbstractInstanceMethodA
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         if (args[2] instanceof QueryCommandExecutor) {
             methodTimeRecorder.recordNow(method);
         }
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         if (args[2] instanceof QueryCommandExecutor) {
             MetricsCollectorRegistry.<HistogramMetricsCollector>get(config, 
pluginType).observe(methodTimeRecorder.getElapsedTimeAndClean(method));
         }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
index f0fbacb5208..780a2cf83a4 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public final class RequestsCountAdvice extends 
AbstractInstanceMethodAdvice {
             MetricCollectorType.COUNTER, "Total requests of 
ShardingSphere-Proxy", Collections.emptyList(), Collections.emptyMap());
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc();
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
index d37d2c8c955..839483aab76 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
@@ -24,7 +25,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.type.Counte
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 /**
@@ -36,7 +36,7 @@ public final class RollbackTransactionsCountAdvice extends 
AbstractInstanceMetho
             MetricCollectorType.COUNTER, "Total transactions of 
ShardingSphere-Proxy", Collections.singletonList("type"), 
Collections.emptyMap());
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
+    public void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         MetricsCollectorRegistry.<CounterMetricsCollector>get(config, 
pluginType).inc("rollback");
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
index c8bb4a26511..4acd99a3382 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -28,7 +29,6 @@ import 
org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collections;
 
@@ -51,7 +51,7 @@ class RouteResultCountAdviceTest {
         RouteMapper dataSourceMapper = new RouteMapper("logic_db", "ds_0");
         RouteMapper tableMapper = new RouteMapper("t_order", "t_order_0");
         routeContext.getRouteUnits().add(new RouteUnit(dataSourceMapper, 
Collections.singleton(tableMapper)));
-        new RouteResultCountAdvice().afterMethod(new 
TargetAdviceObjectFixture(), mock(Method.class), new Object[]{}, routeContext, 
"FIXTURE");
+        new RouteResultCountAdvice().afterMethod(new 
TargetAdviceObjectFixture(), mock(TargetAdviceMethod.class), new Object[]{}, 
routeContext, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(routedResultConfig, 
"FIXTURE").toString(), is("data_source.ds_0=1, table.t_order_0=1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
index 475da88adcb..9e459914be7 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -39,7 +40,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.mysql.tcl.MySQLCommitState
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -116,7 +116,7 @@ class SQLParseCountAdviceTest {
     }
     
     private void assertParse(final SQLStatement sqlStatement, final String 
expected) {
-        new SQLParseCountAdvice().afterMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, sqlStatement, "FIXTURE");
+        new SQLParseCountAdvice().afterMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, sqlStatement, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is(expected));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
index c55bc4e33d1..95867b3560b 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -35,7 +36,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.mysql.dml.MySQLUpdateState
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.Optional;
 
@@ -90,7 +90,7 @@ class SQLRouteCountAdviceTest {
     }
     
     void assertRoute(final QueryContext queryContext, final String expected) {
-        advice.beforeMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{new ConnectionContext(Collections::emptySet), 
queryContext}, "FIXTURE");
+        advice.beforeMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{new 
ConnectionContext(Collections::emptySet), queryContext}, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is(expected));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdviceTest.java
index 70e9600a1ef..51438fb7911 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteCountAdviceTest.java
@@ -17,15 +17,15 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -45,14 +45,14 @@ class AbstractExecuteCountAdviceTest {
     @Test
     void assertWithStatement() {
         StatementExecuteCountAdvice advice = new StatementExecuteCountAdvice();
-        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, null, "FIXTURE");
+        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, null, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("statement=1"));
     }
     
     @Test
     void assertWithPreparedStatement() {
         PreparedStatementExecuteCountAdvice advice = new 
PreparedStatementExecuteCountAdvice();
-        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, null, "FIXTURE");
+        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, null, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("prepared_statement=1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdviceTest.java
index 516863f1c92..f3986eb529b 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteErrorsCountAdviceTest.java
@@ -17,16 +17,16 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -46,14 +46,14 @@ class AbstractExecuteErrorsCountAdviceTest {
     @Test
     void assertWithStatement() {
         StatementExecuteErrorsCountAdvice advice = new 
StatementExecuteErrorsCountAdvice();
-        advice.onThrowing(new TargetAdviceObjectFixture(), mock(Method.class), 
new Object[]{}, mock(IOException.class), "FIXTURE");
+        advice.onThrowing(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, mock(IOException.class), 
"FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("statement=1"));
     }
     
     @Test
     void assertWithPreparedStatement() {
         PreparedStatementExecuteErrorsCountAdvice advice = new 
PreparedStatementExecuteErrorsCountAdvice();
-        advice.onThrowing(new TargetAdviceObjectFixture(), mock(Method.class), 
new Object[]{}, mock(IOException.class), "FIXTURE");
+        advice.onThrowing(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, mock(IOException.class), 
"FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("prepared_statement=1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdviceTest.java
index 8ba1a362819..4a530ebb023 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractExecuteLatencyHistogramAdviceTest.java
@@ -17,16 +17,16 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import org.awaitility.Awaitility;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.concurrent.TimeUnit;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -46,7 +46,7 @@ class AbstractExecuteLatencyHistogramAdviceTest {
     void assertWithStatement() {
         StatementExecuteLatencyHistogramAdvice advice = new 
StatementExecuteLatencyHistogramAdvice();
         TargetAdviceObjectFixture targetObject = new 
TargetAdviceObjectFixture();
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         advice.beforeMethod(targetObject, method, new Object[]{}, "FIXTURE");
         Awaitility.await().pollDelay(200L, TimeUnit.MILLISECONDS).until(() -> 
true);
         advice.afterMethod(targetObject, method, new Object[]{}, null, 
"FIXTURE");
@@ -57,7 +57,7 @@ class AbstractExecuteLatencyHistogramAdviceTest {
     void assertWithPreparedStatement() {
         PreparedStatementExecuteLatencyHistogramAdvice advice = new 
PreparedStatementExecuteLatencyHistogramAdvice();
         TargetAdviceObjectFixture targetObject = new 
TargetAdviceObjectFixture();
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         advice.beforeMethod(targetObject, method, new Object[]{}, "FIXTURE");
         Awaitility.await().pollDelay(200L, TimeUnit.MILLISECONDS).until(() -> 
true);
         advice.afterMethod(targetObject, method, new Object[]{}, null, 
"FIXTURE");
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdviceTest.java
index d3f56fc0cd8..ff31e875135 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/AbstractTransactionsCountAdviceTest.java
@@ -17,15 +17,15 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -45,14 +45,14 @@ class AbstractTransactionsCountAdviceTest {
     @Test
     void assertWithCommit() {
         CommitTransactionsCountAdvice advice = new 
CommitTransactionsCountAdvice();
-        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, null, "FIXTURE");
+        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, null, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("commit=1"));
     }
     
     @Test
     void assertWithRollback() {
         RollbackTransactionsCountAdvice advice = new 
RollbackTransactionsCountAdvice();
-        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, null, "FIXTURE");
+        advice.afterMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, null, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("rollback=1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdviceTest.java
index f77162e8d1e..e2cba8879d2 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/jdbc/ShardingSphereDataSourceAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.plugin.core.holder.ContextManagerHolder;
 import org.apache.shardingsphere.agent.plugin.core.util.AgentReflectionUtils;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
@@ -28,8 +29,6 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
-import java.lang.reflect.Method;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -58,7 +57,7 @@ class ShardingSphereDataSourceAdviceTest {
     void assertBeforeMethod() {
         ContextManagerHolder.put(databaseName, mock(ContextManager.class, 
RETURNS_DEEP_STUBS));
         assertThat(ContextManagerHolder.getDatabaseContextManager().size(), 
is(1));
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         when(method.getName()).thenReturn("close");
         ShardingSphereDataSourceAdvice advice = new 
ShardingSphereDataSourceAdvice();
         advice.beforeMethod(fixture, method, new Object[]{}, "FIXTURE");
@@ -68,7 +67,7 @@ class ShardingSphereDataSourceAdviceTest {
     @Test
     void assertAfterMethod() {
         assertThat(ContextManagerHolder.getDatabaseContextManager().size(), 
is(0));
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         when(method.getName()).thenReturn("createContextManager");
         ShardingSphereDataSourceAdvice advice = new 
ShardingSphereDataSourceAdvice();
         advice.afterMethod(fixture, method, new Object[]{}, 
mock(ContextManager.class, RETURNS_DEEP_STUBS), "FIXTURE");
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
index 1d3e3915fdd..512be2f317d 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
@@ -17,15 +17,15 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -45,7 +45,7 @@ class CommitTransactionsCountAdviceTest {
     
     @Test
     void assertMethod() {
-        advice.beforeMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, "FIXTURE");
+        advice.beforeMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("commit=1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
index f88827fea97..b52d8eadfc7 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
@@ -17,15 +17,15 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
+import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -53,8 +53,8 @@ class CurrentConnectionsCountAdviceTest {
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("1"));
     }
     
-    private Method mockMethod(final String methodName) {
-        Method result = mock(Method.class);
+    private TargetAdviceMethod mockMethod(final String methodName) {
+        TargetAdviceMethod result = mock(TargetAdviceMethod.class);
         when(result.getName()).thenReturn(methodName);
         return result;
     }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
index df3c8fa24b5..a1c4e98ce4e 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -25,7 +26,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -44,7 +44,7 @@ class ExecuteErrorsCountAdviceTest {
     @Test
     void assertCountExecuteErrors() {
         TargetAdviceObjectFixture targetObject = new 
TargetAdviceObjectFixture();
-        new ExecuteErrorsCountAdvice().afterMethod(targetObject, 
mock(Method.class), new Object[]{}, null, "FIXTURE");
+        new ExecuteErrorsCountAdvice().afterMethod(targetObject, 
mock(TargetAdviceMethod.class), new Object[]{}, null, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
index d1857ef129f..c28299228f0 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -28,7 +29,6 @@ import org.awaitility.Awaitility;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.concurrent.TimeUnit;
 
@@ -50,7 +50,7 @@ class ExecuteLatencyHistogramAdviceTest {
     void assertExecuteLatencyHistogramWhenQueryCommandExecutor() {
         ExecuteLatencyHistogramAdvice advice = new 
ExecuteLatencyHistogramAdvice();
         TargetAdviceObjectFixture targetObject = new 
TargetAdviceObjectFixture();
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         Object[] args = new Object[]{null, null, 
mock(MySQLComQueryPacketExecutor.class)};
         advice.beforeMethod(targetObject, method, args, "FIXTURE");
         Awaitility.await().pollDelay(500L, TimeUnit.MILLISECONDS).until(() -> 
true);
@@ -62,7 +62,7 @@ class ExecuteLatencyHistogramAdviceTest {
     void assertExecuteLatencyHistogramWhenNotQueryCommandExecutor() {
         ExecuteLatencyHistogramAdvice advice = new 
ExecuteLatencyHistogramAdvice();
         TargetAdviceObjectFixture targetObject = new 
TargetAdviceObjectFixture();
-        Method method = mock(Method.class);
+        TargetAdviceMethod method = mock(TargetAdviceMethod.class);
         Object[] args = new Object[]{null, null, 
mock(MySQLComQuitExecutor.class)};
         advice.beforeMethod(targetObject, method, args, "FIXTURE");
         Awaitility.await().pollDelay(20L, TimeUnit.MILLISECONDS).until(() -> 
true);
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
index 1617ccf71d0..6debcd907e8 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -25,7 +26,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -46,7 +46,7 @@ class RequestsCountAdviceTest {
     @Test
     void assertCountRequests() {
         TargetAdviceObjectFixture targetObject = new 
TargetAdviceObjectFixture();
-        advice.afterMethod(targetObject, mock(Method.class), new Object[]{}, 
null, "FIXTURE");
+        advice.afterMethod(targetObject, mock(TargetAdviceMethod.class), new 
Object[]{}, null, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("1"));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
index 0d4127e47b2..bfe4a669f95 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
 import 
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
@@ -25,7 +26,6 @@ import 
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceO
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -45,7 +45,7 @@ class RollbackTransactionsCountAdviceTest {
     
     @Test
     void assertMethod() {
-        advice.beforeMethod(new TargetAdviceObjectFixture(), 
mock(Method.class), new Object[]{}, "FIXTURE");
+        advice.beforeMethod(new TargetAdviceObjectFixture(), 
mock(TargetAdviceMethod.class), new Object[]{}, "FIXTURE");
         assertThat(MetricsCollectorRegistry.get(config, "FIXTURE").toString(), 
is("rollback=1"));
     }
 }
diff --git 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingJDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingJDBCExecutorCallbackAdvice.java
index de151c669c7..c9d96225613 100644
--- 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingJDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingJDBCExecutorCallbackAdvice.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.core.util.AgentReflectionUtils;
@@ -26,8 +27,6 @@ import 
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 
-import java.lang.reflect.Method;
-
 /**
  * Tracing JDBC executor callback advice executor.
  * 
@@ -38,7 +37,7 @@ public abstract class TracingJDBCExecutorCallbackAdvice<T> 
extends AbstractInsta
     protected static final String OPERATION_NAME = 
"/ShardingSphere/executeSQL/";
     
     @Override
-    public final void beforeMethod(final TargetAdviceObject target, final 
Method method, final Object[] args, final String pluginType) {
+    public final void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         JDBCExecutionUnit executionUnit = (JDBCExecutionUnit) args[0];
         ResourceMetaData resourceMetaData = 
AgentReflectionUtils.getFieldValue(target, "resourceMetaData");
         ConnectionProperties connectionProps = 
resourceMetaData.getStorageUnits().get(executionUnit.getExecutionUnit().getDataSourceName()).getConnectionProperties();
diff --git 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingRootSpanAdvice.java
 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingRootSpanAdvice.java
index f8702d27054..195c2b3ed6b 100644
--- 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingRootSpanAdvice.java
+++ 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingRootSpanAdvice.java
@@ -17,12 +17,11 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 
-import java.lang.reflect.Method;
-
 /**
  * Tracing root span advice.
  * 
@@ -33,21 +32,21 @@ public abstract class TracingRootSpanAdvice<T> extends 
AbstractInstanceMethodAdv
     protected static final String OPERATION_NAME = 
"/ShardingSphere/rootInvoke/";
     
     @Override
-    public final void beforeMethod(final TargetAdviceObject target, final 
Method method, final Object[] args, final String pluginType) {
+    public final void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         RootSpanContext.set(createRootSpan(target, method, args));
     }
     
-    protected abstract T createRootSpan(TargetAdviceObject target, Method 
method, Object[] args);
+    protected abstract T createRootSpan(TargetAdviceObject target, 
TargetAdviceMethod method, Object[] args);
     
     @Override
-    public final void afterMethod(final TargetAdviceObject target, final 
Method method, final Object[] args, final Object result, final String 
pluginType) {
+    public final void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         finishRootSpan(RootSpanContext.get(), target);
     }
     
     protected abstract void finishRootSpan(T rootSpan, TargetAdviceObject 
target);
     
     @Override
-    public final void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
+    public final void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
final String pluginType) {
         recordException(RootSpanContext.get(), target, throwable);
     }
     
diff --git 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
index 39ba1fe25ef..893b1ab3e2f 100644
--- 
a/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/core/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/core/advice/TracingSQLParserEngineAdvice.java
@@ -17,12 +17,11 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.core.advice;
 
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.core.advice.AbstractInstanceMethodAdvice;
 import org.apache.shardingsphere.agent.plugin.tracing.core.RootSpanContext;
 
-import java.lang.reflect.Method;
-
 /**
  * Tracing SQL parser engine advice executor.
  * 
@@ -33,7 +32,7 @@ public abstract class TracingSQLParserEngineAdvice<T> extends 
AbstractInstanceMe
     protected static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
     
     @Override
-    public final void beforeMethod(final TargetAdviceObject target, final 
Method method, final Object[] args, final String pluginType) {
+    public final void beforeMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final String pluginType) {
         recordSQLParseInfo(RootSpanContext.get(), target, 
String.valueOf(args[0]));
     }
     
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
index 9eeb7325f95..951a18f7aea 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java
@@ -23,6 +23,7 @@ import io.opentelemetry.api.trace.SpanBuilder;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.api.trace.Tracer;
 import io.opentelemetry.context.Context;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingJDBCExecutorCallbackAdvice;
 import 
org.apache.shardingsphere.agent.plugin.tracing.core.constant.AttributeConstants;
@@ -31,8 +32,6 @@ import 
org.apache.shardingsphere.infra.database.core.connector.ConnectionPropert
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
 
-import java.lang.reflect.Method;
-
 /**
  * OpenTelemetry JDBC executor callback advice executor.
  */
@@ -56,14 +55,14 @@ public final class OpenTelemetryJDBCExecutorCallbackAdvice 
extends TracingJDBCEx
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         Span span = (Span) target.getAttachment();
         span.setStatus(StatusCode.OK);
         span.end();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
+    public void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
final String pluginType) {
         Span span = (Span) target.getAttachment();
         span.setStatus(StatusCode.ERROR).recordException(throwable);
         span.end();
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryRootSpanAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryRootSpanAdvice.java
index aa0263b8b4a..8bf080ee012 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryRootSpanAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryRootSpanAdvice.java
@@ -21,20 +21,19 @@ import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.api.trace.Span;
 import io.opentelemetry.api.trace.SpanBuilder;
 import io.opentelemetry.api.trace.StatusCode;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingRootSpanAdvice;
 import 
org.apache.shardingsphere.agent.plugin.tracing.core.constant.AttributeConstants;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
 
-import java.lang.reflect.Method;
-
 /**
  * OpenTelemetry root span advice.
  */
 public final class OpenTelemetryRootSpanAdvice extends 
TracingRootSpanAdvice<Span> {
     
     @Override
-    protected Span createRootSpan(final TargetAdviceObject target, final 
Method method, final Object[] args) {
+    protected Span createRootSpan(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args) {
         SpanBuilder spanBuilder = 
GlobalOpenTelemetry.getTracer(OpenTelemetryConstants.TRACER_NAME)
                 .spanBuilder(OPERATION_NAME)
                 .setAttribute(AttributeConstants.COMPONENT, 
AttributeConstants.COMPONENT_NAME)
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
index ab3bd90b714..4f87b13e586 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java
@@ -23,13 +23,12 @@ import io.opentelemetry.api.trace.SpanBuilder;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.api.trace.Tracer;
 import io.opentelemetry.context.Context;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceMethod;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import 
org.apache.shardingsphere.agent.plugin.tracing.core.advice.TracingSQLParserEngineAdvice;
 import 
org.apache.shardingsphere.agent.plugin.tracing.core.constant.AttributeConstants;
 import 
org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
 
-import java.lang.reflect.Method;
-
 /**
  * OpenTelemetry SQL parser engine advice executor.
  */
@@ -49,14 +48,14 @@ public final class OpenTelemetrySQLParserEngineAdvice 
extends TracingSQLParserEn
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
+    public void afterMethod(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Object result, final 
String pluginType) {
         Span span = (Span) target.getAttachment();
         span.setStatus(StatusCode.OK);
         span.end();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
+    public void onThrowing(final TargetAdviceObject target, final 
TargetAdviceMethod method, final Object[] args, final Throwable throwable, 
final String pluginType) {
         Span span = (Span) target.getAttachment();
         span.setStatus(StatusCode.ERROR).recordException(throwable);
         span.end();

Reply via email to