Spring属性配置

时间:2016-02-05 09:39:37

标签: spring

我已经阅读了几篇关于Spring的文章,但找不到解决这个问题的优雅方法。

a)使用 PropertyPlaceholderConfigurer 加载属性文件。 E.g。

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

b)查找“app.properties”中配置的数据库类型 app.database = MySQL的

c)然后使用 PropertyPlaceHolderConfigurer (例如mysql.properties)加载与此数据库类型相关的属性,并在上下文中为bean提供

2 个答案:

答案 0 :(得分: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=

答案 1 :(得分:-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();
  }
}

这是使用spring 4.0 +

只需在需要的地方使用${property name}