diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java index f2c77c5..56b3a04 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java @@ -43,9 +43,7 @@ public class WechatPayConfiguration { @Bean @ConditionalOnMissingBean WechatMetaContainer wechatMetaContainer(WechatTenantService wechatTenantService) { - WechatMetaContainer container = new WechatMetaContainer(); - container.addWechatMetas(wechatTenantService.loadTenants()); - return container; + return new WechatMetaContainer(wechatTenantService); } /** diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java index 5109bec..d82c0ca 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java @@ -17,6 +17,9 @@ package cn.felord.payment.wechat.v3; +import cn.felord.payment.wechat.WechatTenantService; +import lombok.AllArgsConstructor; + import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListSet; @@ -27,10 +30,11 @@ import java.util.concurrent.ConcurrentSkipListSet; * @author felord.cn * @since 1.0.0.RELEASE */ +@AllArgsConstructor public class WechatMetaContainer { private final Map wechatMetaBeanMap = new ConcurrentHashMap<>(); private final Set tenantIds = new ConcurrentSkipListSet<>(); - + private final WechatTenantService wechatTenantService; /** * Add wechat metas. @@ -66,7 +70,14 @@ public class WechatMetaContainer { * @return the wechat meta */ public WechatMetaBean getWechatMeta(String tenantId) { - return Objects.requireNonNull(this.wechatMetaBeanMap.get(tenantId)); + WechatMetaBean wechatMetaBean = this.wechatMetaBeanMap.get(tenantId); + if (Objects.nonNull(wechatMetaBean)) { + return wechatMetaBean; + } else { + this.addWechatMetas(wechatTenantService.loadTenants()); + return Objects.requireNonNull(this.wechatMetaBeanMap.get(tenantId), + "cant obtain the config with tenant: "+tenantId); + } } /**