java – Spring Boot外部化属性不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Boot外部化属性不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2833字,纯文字阅读大概需要5分钟。
内容图文
我看了下面的线程,并按照那里给出的东西.我的财产覆盖仍然没有发生
1)Spring Boot – Externalized properties
2)Profile Specific Property Enablement
3)Spring Boot External Config
我在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一样,我发现在冒号后没有传递三个斜杠时它不能识别属性.
我为你创建了一个示例项目,available here with instructions.
现在我使用的方法.
我为每个配置文件定义了一个配置文件,并将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,亚马逊网络服务,条纹等创建Spring Boot网站的课程.如果您愿意,可以注册您的兴趣here,当课程开放注册时您会收到通知.
内容总结
以上是互联网集市为您收集整理的java – Spring Boot外部化属性不起作用全部内容,希望文章能够帮你解决java – Spring Boot外部化属性不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。