关于 spring 引导配置文件无法工作
about spring boot Profile can not work
当我使用命令时
mvn spring-boot:run -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
当我使用动作时,显示这个
使用框架而不是 against/around 它。 Spring 启动有 build in support 加载配置文件特定 application.properties
文件。
而不是试图将多个 PropertyPlaceholderConfigurer
硬塞进 Spring 启动应用程序。创建包含您的属性的 application.properties
和 application-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
申请-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 完成繁重的工作。
专业提示: 从属性的名称来看,您的 DataSource
也有一个自定义的 @Bean
。您可能不想使用自定义名称,而是使用 spring.datasource.*
属性并让 Spring 引导 create/manage 您的数据源。
当我使用命令时
mvn spring-boot:run -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
当我使用动作时,显示这个
使用框架而不是 against/around 它。 Spring 启动有 build in support 加载配置文件特定 application.properties
文件。
而不是试图将多个 PropertyPlaceholderConfigurer
硬塞进 Spring 启动应用程序。创建包含您的属性的 application.properties
和 application-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
申请-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 完成繁重的工作。
专业提示: 从属性的名称来看,您的 DataSource
也有一个自定义的 @Bean
。您可能不想使用自定义名称,而是使用 spring.datasource.*
属性并让 Spring 引导 create/manage 您的数据源。