关于spring boot配置文件无法正常工作

时间:2017-05-18 12:02:33

标签: spring maven spring-boot profiles

当我使用命令

  

mvn spring-boot:运行-Dspring.profiles.active = web

我的项目正在运行,但未使用@Profile("web") bean代码,仅使用 bean写的属性

 @Profile("default")

如何更改,属性更改为网络个人资料?

@Profile("default")
@Bean
static public PropertySourcesPlaceholderConfigurer defaultPropertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer p = new PropertySourcesPlaceholderConfigurer();
    Resource[] resourceLocations = new Resource[] { new ClassPathResource("job.core.properties") };
    p.setLocations(resourceLocations);
    return p;
}

@Profile("web")
@Bean
static public PropertySourcesPlaceholderConfigurer prodWebPropertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer p = new PropertySourcesPlaceholderConfigurer();
    Resource[] resourceLocations = new Resource[] {new ClassPathResource("job.core.ris.properties") };
    p.setLocations(resourceLocations);
    return p;
}
  

job.core.ris.properties

db.driverClass=com.mysql.jdbc.Driver
db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/job_ris?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8
db.user=root
db.password=
  

job.core.properties

db.driverClass=com.mysql.jdbc.Driver
db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/dev?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8

当我使用动作时,请显示此信息 enter image description here

1 个答案:

答案 0 :(得分:0)

使用框架而不是反对/围绕它。 Spring Boot有build in support来加载配置文件特定的application.properties文件。

而不是试图将多个PropertyPlaceholderConfigurer套入Spring Boot应用程序中。创建包含您的媒体资源的application.propertiesapplication-web.properties

<强> application.properties

db.driverClass=com.mysql.jdbc.Driver
db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/dev?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8

<强> application-web.properties

db.jdbcUrl=jdbc:mysql://192.168.0.68:3306/job_ris?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8
db.user=root
db.password=

(注意缺少的db.driverClass您只需要包含不同的属性)。

接下来删除自定义的@Bean注释方法,让Spring Boot完成繁重的任务。

专家提示:根据媒体资源的名称判断,@Bean还有自定义DataSource。您可能希望使用spring.datasource.*属性而不是使用自定义名称,让Spring Boot创建/管理您的数据源。