diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/ApplicationUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/ApplicationUtil.java
new file mode 100644
index 0000000..3523689
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/ApplicationUtil.java
@@ -0,0 +1,29 @@
+package com.supwisdom.dlpay.framework.util;
+
+import com.supwisdom.dlpay.agent.AgentPayService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.context.ApplicationContext;
+
+public class ApplicationUtil {
+  private static final Logger logger = LoggerFactory.getLogger(ApplicationUtil.class);
+
+  public static AgentPayService findAgentPayService(ApplicationContext context, String service) {
+    try {
+      Object bean = context.getBean(service);
+      if (bean instanceof AgentPayService) {
+        return (AgentPayService) bean;
+      } else {
+        return null;
+      }
+    } catch (NoSuchBeanDefinitionException ex) {
+      logger.error("can't create bean <%s> , ex %s", service, ex.getMessage());
+      return null;
+    } catch (BeansException ex) {
+      logger.error("can't create bean <%s> , ex %s", service, ex.getMessage());
+      return null;
+    }
+  }
+}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index 55f0697..b0be489 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -199,14 +199,9 @@
     }
 
     fun createAgentService(sourceType: String): AgentPayService {
-        return applicationContext.getBean(sourceType + "Agent")?.let {
-            if (it is AgentPayService) {
-                it
-            } else {
-                null
-            }
-        } ?: throw TransactionCheckException(TradeErrorCode.BUSINESS_DEAL_ERROR,
-                "支付类型<$sourceType>未定义")
+        return ApplicationUtil.findAgentPayService(applicationContext, sourceType + "Agent")
+                ?: throw TransactionCheckException(TradeErrorCode.BUSINESS_DEAL_ERROR,
+                        "支付类型<$sourceType>未定义")
     }
 
     /**
