我的应用程序有两种运行模式:SHORT,LONG。 每种模式都有不同的源文件夹,在配置文件中定义。 假设用户将在运行时选择模式,如何设置所选文件夹?
public enum Mode {
SHORT,
LONG
}
config.properties:
short.dir = short_test
full.dir = full_test
@Configuration
@PropertySource({"classpath:config/config.properties"})
public class runJob {
@Value("${default.dir}")
private String folder;
}
谢谢,肺门
答案 0 :(得分:1)
不确定根据用户输入在运行时修改配置是个好主意。我想你应该收集所有需要的配置,例如Map
,并通过这个运行时变量获取它们。 E.G:
public enum Mode {
SHORT,
LONG
}
@Configuration
@PropertySource("classpath:config/config.properties")
public class AppConfig {
@Value("${short.mode.dir}")
private String shortModeDir;
@Value("${long.mode.dir}")
private String longModeDir;
private volatile Map<Mode, String> configurationMap = new HashMap<>();
@PostConstruct
public void setUp() {
configurationMap.put(Mode.SHORT, shortModeDir);
configurationMap.put(Mode.LONG, longModeDir);
}
public String getDirectoryByMode(Mode mode) {
return configurationMap.get(mode);
}
}
您可以使用方法getDirectoryByMode
来获取所需的配置。