2017-06-19 3 views
0

私のアプリケーションには、SHORT、LONGという2つの実行モードがあります。 各モードには、設定ファイルで定義された異なるソースフォルダがあります。 実行時にユーザーがモードを選択すると仮定すると、選択したフォルダをどのように設定できますか?Beanの設定プロパティを選択するためのenumによるスプリング

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を使用して必要な設定を行うことができます。

関連する問題