2016-02-05 2 views
0

Я прочитал десятки статей весной, но не смог найти изящное решение этой проблемы.Конфигурация конфигурации весны

a) Загрузить файл свойств, используя PropertyPlaceholderConfigurer. Например.

// Load properties file 
@Bean(name = "appProperties") 
public static PropertyPlaceholderConfigurer getApplicationProperties() { 
PropertyPlaceholderConfigurer bean = new PropertyPlaceholderConfigurer(); 
bean.setLocation(new ClassPathResource("app.properties")); 
return bean; 
} 

б) Найти тип базы данных, выполненный в "app.properties" app.database = тузд

гр), то свойства нагрузки, связанные с этим типом базы данных с использованием PropertyPlaceHolderConfigurer (например, mysql.properties) и сделать его доступным в контексте для фасоли

+0

Hi @Romail, пожалуйста, разобраться в этом: http://kruders.com/spring/spring-propertyplaceholderconfigurer- using-annotation/ – Backtrack

+0

Эта ссылка не помогает. Я хочу загрузить новый файл свойств на основе свойства, определенного в app.properties –

ответ

0
@Bean 
    public static PropertyPlaceholderConfigurer properties(){ 
     PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); 
     ClassPathResource[] resources = new ClassPathResource[ ] 
     { new ClassPathResource("db.properties") }; 
     ppc.setLocations(resources); 
     ppc.setIgnoreUnresolvablePlaceholders(true); 
     return ppc; 
    } 

    @Value("${jdbc.url}") private String jdbcUrl; 
    @Value("${jdbc.driverClassName}") private String driverClassName; 
    @Value("${jdbc.username}") private String username; 
    @Value("${jdbc.password}") private String password; 

    @Bean(name="datasource") 
    public DataSource datasource() { 
     BasicDataSource ds = new BasicDataSource(); 
     ds.setDriverClassName(driverClassName); 
     ds.setUrl(jdbcUrl); 
     ds.setUsername(username); 
     ds.setPassword(password); 
     return ds; 
    } 

Я думаю, что выше, может быть полезным

Создать db.properties, содержащий ваши данные в базе данных

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/test 
jdbc.username=root 
jdbc.password= 
+0

Это не поможет. Я хочу, чтобы местоположение «db.properties» изменялось динамически на основе свойства, определенного в app.properties. Так, например, если в app.properties у меня есть «app.database = mysql», тогда я хочу загрузить «mysql.properties». Если у меня есть «app.database = h2», тогда я хочу загрузить «h2.properties», –

-1

Просто попробуйте с этим.

@ComponentScan(basePackageClasses = "name of package where you are writing the class") 
@PropertySource({ "classpath:(properties file name).properties"}) 

@Configuration 
public class RootAppConfig { 


    @Bean 
    public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { 
    return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 

это с помощью пружины 4.0+

и просто использовать ${property name} где когда-либо необходимый

Смежные вопросы