2017-06-19 3 views
0

Mon application a deux modes de fonctionnement: COURT, LONG. Chaque mode a un dossier source différent qui a été défini dans le fichier de configuration. En supposant que l'utilisateur choisira le mode en cours d'exécution comment puis-je définir le dossier choisi?Spring par enum pour choisir les propriétés de configuration du 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; 

} 

Merci, Hila

Répondre

1

Je ne sais pas qu'il est judicieux de modifier les configurations dans l'exécution en fonction de l'entrée utilisateur. Je suppose que vous devriez rassembler toutes les configurations nécessaires, par exemple à Map et les obtenir par cette variable d'exécution. Par exemple:

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); 
    } 
} 

Vous pouvez utiliser la méthode getDirectoryByMode pour obtenir la configuration nécessaire.