fix(pdd): sku-overrides Converter 改为具名类,避免 MVC ConversionService 无法解析 lambda 泛型导致启动失败
Made-with: Cursor
This commit is contained in:
parent
9c1fe79acd
commit
679a32e284
|
|
@ -1,16 +1,7 @@
|
||||||
package cn.qihangerp.service.external.pdd;
|
package cn.qihangerp.service.external.pdd;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
|
||||||
import com.alibaba.fastjson2.JSONException;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.convert.converter.Converter;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author guochengyu
|
* @author guochengyu
|
||||||
|
|
@ -18,28 +9,4 @@ import java.util.List;
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableConfigurationProperties(ExternalPddProperties.class)
|
@EnableConfigurationProperties(ExternalPddProperties.class)
|
||||||
public class ExternalPddConfiguration {
|
public class ExternalPddConfiguration {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(ExternalPddConfiguration.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* K8s/Helm 常把 {@code sku-overrides: []} 落成环境变量 {@code EXTERNAL_PDD_SKU_OVERRIDES=[]}(字符串),
|
|
||||||
* 默认 Binder 无法转为 {@link List};此处兼容 {@code []}、空串及 JSON 数组。
|
|
||||||
*/
|
|
||||||
@Bean
|
|
||||||
public Converter<String, List<ExternalPddProperties.PddSkuOverride>> externalPddSkuOverridesStringConverter() {
|
|
||||||
return source -> {
|
|
||||||
String s = source == null ? "" : source.trim();
|
|
||||||
if (s.isEmpty() || "[]".equals(s)) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
List<ExternalPddProperties.PddSkuOverride> list =
|
|
||||||
JSON.parseArray(s, ExternalPddProperties.PddSkuOverride.class);
|
|
||||||
return list != null ? list : new ArrayList<>();
|
|
||||||
} catch (JSONException e) {
|
|
||||||
log.warn("external.pdd.sku-overrides 环境变量/配置非合法 JSON,已按空列表处理: {}", e.getMessage());
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package cn.qihangerp.service.external.pdd;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.alibaba.fastjson2.JSONException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.core.convert.converter.Converter;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将配置源中的字符串(含环境变量 {@code EXTERNAL_PDD_SKU_OVERRIDES=[]})转为 {@code sku-overrides} 列表。
|
||||||
|
* <p>
|
||||||
|
* 必须实现为<strong>带泛型的具体类</strong>,不能用法方法引用/lambda 注册为 Bean,否则 Spring MVC
|
||||||
|
* {@code mvcConversionService} 无法解析泛型会启动失败。
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class ExternalPddSkuOverridesStringConverter
|
||||||
|
implements Converter<String, List<ExternalPddProperties.PddSkuOverride>> {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(ExternalPddSkuOverridesStringConverter.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ExternalPddProperties.PddSkuOverride> convert(String source) {
|
||||||
|
String s = source == null ? "" : source.trim();
|
||||||
|
if (s.isEmpty() || "[]".equals(s)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
List<ExternalPddProperties.PddSkuOverride> list =
|
||||||
|
JSON.parseArray(s, ExternalPddProperties.PddSkuOverride.class);
|
||||||
|
return list != null ? list : new ArrayList<>();
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.warn("external.pdd.sku-overrides 环境变量/配置非合法 JSON,已按空列表处理: {}", e.getMessage());
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue