2015-03-26 3 views
0

Я не могу преобразовать следующую конфигурацию в конфигурацию java.convert spring xml configuration to java configuration

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> 
     <property name="ignoreResourceNotFound" value="true"/> 
     <property name="locations"> 
     <list> 
      <value>classpath*:META-INF/spring/environments/${XXX_env}/*.properties</value> 
      <value>file:/etc/XXX/database.properties</value> 
     </list> 
     </property> 
    </bean> 

В приведенном выше примере XXX_env является переменной окружения. Например,

export XXX_env=dev 

Как это преобразовать в Spring Java Configuration? Вот моя попытка:

@Bean 
public PropertyPlaceholderConfigurer propertyConfigurer() throws IOException { 
    PropertyPlaceholderConfigurer props = new PropertyPlaceholderConfigurer(); 
    props.setIgnoreResourceNotFound(true); 
    props.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE); 
    Resource[] locations; 
    PathMatchingResourcePatternResolver classPathResources = new PathMatchingResourcePatternResolver(); 
    locations = classPathResources.getResources("classpath*:META-INF/spring/environments/"+env()+ "/*.properties"); 
    props.setLocations(locations); 
    Resource location = new FileSystemResource("/etc/XXX/database.properties"); 
    props.setLocation(location); 
    return props; 
} 

private String env(){ 
    Map<String, String> env = System.getenv(); 
    return env.get("XXX_env"); 
} 

@Value("${database.password}") 
private String databasePassword; 

@Value("${database.url}") 
private String databaseUrl; 

@Value("${database.username}") 
private String databaseUsername; 

@Value("${database.driverClassName}") 
private String databaseDriverClassName; 
+1

Почему вы не в состоянии, в чем проблема? –

+0

Позвольте мне обновить вопрос. – riship89

+1

Проблема здесь с 'env()'? Вы также можете использовать «Среда» Spring, которая может быть использована для инъекций. –

ответ

0

предложение:

поставил

Resource location = new FileSystemResource("/etc/XXX/database.properties"); 

в массиве местоположений затем setLocations(locations) вместо setLocation(location).