Commit 6d057b8d4daf69b30498c447d56bfe431c0f82a4

Authored by YunaiV
1 parent 95355cb5

!208 使用外部中间件时,如:金蝶、东方通 在不重启整个中间件的情况下,二次部署或多个服务同时部署在一个虚拟机下(JVM) IdTypeEnvir…

yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/config/IdTypeEnvironmentPostProcessor.java
... ... @@ -9,7 +9,10 @@ import lombok.extern.slf4j.Slf4j;
9 9 import org.springframework.boot.SpringApplication;
10 10 import org.springframework.boot.env.EnvironmentPostProcessor;
11 11 import org.springframework.core.env.ConfigurableEnvironment;
  12 +import org.springframework.core.env.MapPropertySource;
12 13  
  14 +import java.util.HashMap;
  15 +import java.util.Map;
13 16 import java.util.Set;
14 17  
15 18 /**
... ... @@ -56,11 +59,19 @@ public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor
56 59 }
57 60  
58 61 public IdType getIdType(ConfigurableEnvironment environment) {
59   - return environment.getProperty(ID_TYPE_KEY, IdType.class);
  62 + String value = environment.getProperty(ID_TYPE_KEY);
  63 + try {
  64 + return StrUtil.isNotBlank(value) ? IdType.valueOf(value) : IdType.NONE;
  65 + } catch (IllegalArgumentException ex) {
  66 + log.error("[getIdType][无法解析 id-type 配置值({})]", value, ex);
  67 + return IdType.NONE;
  68 + }
60 69 }
61 70  
62 71 public void setIdType(ConfigurableEnvironment environment, IdType idType) {
63   - environment.getSystemProperties().put(ID_TYPE_KEY, idType);
  72 + Map<String, Object> map = new HashMap<>();
  73 + map.put(ID_TYPE_KEY, idType);
  74 + environment.getPropertySources().addFirst(new MapPropertySource("mybatisPlusIdType", map));
64 75 log.info("[setIdType][修改 MyBatis Plus 的 idType 为({})]", idType);
65 76 }
66 77  
... ...