Spring Boot外部化属性不起作用

我看了下面的线程,并按照那里给出的东西。 我的财产覆盖仍然没有发生

1) Spring Boot – 外部化属性
2) 特定于配置文件的属性启用
3) Spring Boot外部配置

我在tomcat 8.0.33和Spring boot starter web上,并在我的setenv.sh中得到了这个

export JAVA_OPTS="$JAVA_OPTS -Dlog.level=INFO -Dspring.config.location=file:/opt/jboss/apache-tomcat-8.0.33/overrides/ -Dspring.profiles.active=dev" 

在overrides文件夹中,我有2个文件

1) application.properties 2) application-dev.properties

application.properties中只有一个条目

 spring.profiles.active=dev 

我看到正确的log.level被提供给我的代码,这意味着这个命令正在运行。 它只是因为我为什么我的覆盖没有按预期发生而无能为力

我的工作区中没有任何`PropertyPlaceholderConfigurer代码。 我甚至不确定我是否需要1

请帮忙!!!

我不使用此方法来外部属性。 首先,我会尝试一下你的方法,然后我会告诉你我正在使用的是什么。

你的方法的建议是使用file:///而不是file:/和Spring一样,我发现在冒号后没有传递三个斜杠时它不能识别属性。

我已经为您创建了一个示例项目, 此处提供了说明 。

现在我使用的方法。

我为每个配置文件定义了一个配置文件,并将application.properties文件保存在src / main / resources下。

然后我在每个配置文件上使用@Profile和@PropertySource注释。

例如:

 @Configuration @Profile("dev") @PropertySource("file:///${user.home}/.devopsbuddy/application-dev.properties") public class DevelopmentConfig { @Bean public EmailService emailService() { return new MockEmailService(); } @Bean public ServletRegistrationBean h2ConsoleServletRegistration() { ServletRegistrationBean bean = new ServletRegistrationBean(new WebServlet()); bean.addUrlMappings("/console/*"); return bean; } } 

 @Configuration @Profile("prod") @PropertySource("file:///${user.home}/.devopsbuddy/application-prod.properties") public class ProductionConfig { @Bean public EmailService emailService() { return new SmtpEmailService(); } } 

我还有一个对所有配置文件都有效的配置文件,我称之为ApplicationConfig,如下所示:

 @Configuration @EnableJpaRepositories(basePackages = "com.devopsbuddy.backend.persistence.repositories") @EntityScan(basePackages = "com.devopsbuddy.backend.persistence.domain.backend") @EnableTransactionManagement @PropertySource("file:///${user.home}/.devopsbuddy/application-common.properties") public class ApplicationConfig { } 

我的src / main / resources / application.properties文件如下所示:

 spring.profiles.active=dev default.to.address=me@example.com token.expiration.length.minutes=120 

当然,我可以通过将它作为系统属性传递给外部化spring.profile.active属性,但对于我的情况,现在它很好。

运行应用程序时,如果我传递“dev”配置文件,Spring将加载DevelopmentConfig类中定义的所有属性和Bean以及ApplicationConfig中的所有属性和Bean。 如果我传递“prod”,则将加载ProductionConfig和ApplicationConfig属性。

我正在完成一个关于如何使用安全性,电子邮件,数据JPA,amazon web services,条纹等创建Spring Boot网站的课程。 如果您愿意,您可以在此注册您的兴趣,并在课程开放注册时收到通知。