优化结构重构 agent bean 逻辑
authorTang Cheng <cheng.tang@supwisdom.com>
Wed, 17 Jul 2019 14:40:34 +0000 (22:40 +0800)
committerTang Cheng <cheng.tang@supwisdom.com>
Thu, 18 Jul 2019 01:30:30 +0000 (09:30 +0800)
payapi/src/main/java/com/supwisdom/dlpay/framework/util/ApplicationUtil.java [new file with mode: 0644]
payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt

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 (file)
index 0000000..3523689
--- /dev/null
@@ -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;
+    }
+  }
+}
index 55f0697..b0be489 100644 (file)
@@ -199,14 +199,9 @@ class ConsumeAPIController {
     }
 
     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>未定义")
     }
 
     /**