wechatpay-apiv3/wechatpay-java

RSAAutoCertificateConfig如果后续的Service设计是单例,那么RSAAutoCertificateConfig的自动更新貌似无法影响到Service

Closed this issue · 0 comments

ops-xu commented

错误描述

@Bean
    public Config config(WechatPayConfigProperties wechatPayConfigProperties) {
        return new RSAAutoCertificateConfig.Builder()
                .merchantId(wechatPayConfigProperties.getMchId())
                .privateKeyFromPath(wechatPayConfigProperties.getPrivateKeyPath())
                .merchantSerialNumber(wechatPayConfigProperties.getMerchantSerialNumber())
                .apiV3Key(wechatPayConfigProperties.getApiV3Key())
                .build();
    }

    /**
     * @param config
     * @return
     */
    @Bean
    public AppServiceExtension appServiceExtension(Config config) {
        return new AppServiceExtension.Builder().config(config).build();
    }

代码同上,自动更新配置在AppServiceExtension为单例时,后续直接使用AppServiceExtension即使RSAAutoCertificateConfig更新了,AppServiceExtension也会跟着重新config吗?如果不会的话,那对应的Service是不是都不能使用单例了,必须每次使用时new。

重现bug的步骤

@Bean
    public Config config(WechatPayConfigProperties wechatPayConfigProperties) {
        return new RSAAutoCertificateConfig.Builder()
                .merchantId(wechatPayConfigProperties.getMchId())
                .privateKeyFromPath(wechatPayConfigProperties.getPrivateKeyPath())
                .merchantSerialNumber(wechatPayConfigProperties.getMerchantSerialNumber())
                .apiV3Key(wechatPayConfigProperties.getApiV3Key())
                .build();
    }

    /**
     * @param config
     * @return
     */
    @Bean
    public AppServiceExtension appServiceExtension(Config config) {
        return new AppServiceExtension.Builder().config(config).build();
    }

预期行为

各Service单例化

导致错误的代码片段

@Bean
    public Config config(WechatPayConfigProperties wechatPayConfigProperties) {
        return new RSAAutoCertificateConfig.Builder()
                .merchantId(wechatPayConfigProperties.getMchId())
                .privateKeyFromPath(wechatPayConfigProperties.getPrivateKeyPath())
                .merchantSerialNumber(wechatPayConfigProperties.getMerchantSerialNumber())
                .apiV3Key(wechatPayConfigProperties.getApiV3Key())
                .build();
    }

    /**
     * @param config
     * @return
     */
    @Bean
    public AppServiceExtension appServiceExtension(Config config) {
        return new AppServiceExtension.Builder().config(config).build();
    }


### 操作系统

macOs

### Java 版本

Java 17

### wechatpay-java 版本

v0.2.7

### 其他信息

_No response_