2017-06-19 90 views
0

我的應用程序有兩種運行模式:SHORT,LONG。 每種模式都有不同的源文件夾,它在配置文件中定義。 假設用戶將在運行時選擇模式,我如何設置所選的文件夾?Spring通過enum來選擇bean配置屬性

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; 

} 

感謝,肺門

回答

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獲得所需的配置。