(fix)(common)Fix system parameter initialization making sure settings in application.yaml take effect

This commit is contained in:
jerryjzhang
2024-06-05 20:30:13 +08:00
parent b3b9687041
commit d8f53a4e2f
5 changed files with 20 additions and 30 deletions

View File

@@ -21,6 +21,11 @@ public class SystemConfig {
private List<Parameter> parameters;
public void init() {
parameters = buildDefaultParameters();
admins = Lists.newArrayList("admin");
}
public String getAdmin() {
if (CollectionUtils.isEmpty(admins)) {
return "";
@@ -45,11 +50,6 @@ public class SystemConfig {
}
}
public void init() {
parameters = buildDefaultParameters();
admins = Lists.newArrayList("admin");
}
private List<Parameter> buildDefaultParameters() {
List<Parameter> defaultParameters = Lists.newArrayList();
Collection<ParameterConfig> configurableParameters =
@@ -60,18 +60,4 @@ public class SystemConfig {
return defaultParameters;
}
public List<Parameter> getParameters() {
List<Parameter> defaultParameters = buildDefaultParameters();
if (CollectionUtils.isEmpty(parameters)) {
return defaultParameters;
}
Map<String, String> parameterNameValueMap = parameters.stream()
.collect(Collectors.toMap(Parameter::getName, Parameter::getValue, (v1, v2) -> v2));
for (Parameter parameter : defaultParameters) {
parameter.setValue(parameterNameValueMap.getOrDefault(parameter.getName(),
parameter.getDefaultValue()));
}
return defaultParameters;
}
}

View File

@@ -9,6 +9,8 @@ import com.tencent.supersonic.common.pojo.Parameter;
import com.tencent.supersonic.common.pojo.SystemConfig;
import com.tencent.supersonic.common.service.SystemConfigService;
import com.tencent.supersonic.common.util.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
@@ -17,6 +19,9 @@ import java.util.List;
public class SystemConfigServiceImpl
extends ServiceImpl<SystemConfigMapper, SystemConfigDO> implements SystemConfigService {
@Autowired
private Environment environment;
@Override
public SystemConfig getSystemConfig() {
List<SystemConfigDO> list = list();
@@ -24,9 +29,16 @@ public class SystemConfigServiceImpl
SystemConfig systemConfig = new SystemConfig();
systemConfig.setId(1);
systemConfig.init();
// use system property to initialize system parameter
systemConfig.getParameters().stream().forEach(p -> {
if (environment.containsProperty(p.getName())) {
p.setValue(environment.getProperty(p.getName()));
}
});
save(systemConfig);
return systemConfig;
}
return convert(list.iterator().next());
}