在我的Spring Boot应用程序中,我想创建特定于环境的属性文件。战争中我的应用程序的打包类型,我在嵌入式tomcat中执行它。我使用sts并从sts本身执行main。
在上述情况下,env-value的值为local / devl / test / prod
在哪里设置env-value文件?对于local,我可以通过sts
谁在Spring Boot应用程序中读取application.properties。
如何加载特定于环境的属性文件?对于ex - 如果我在环境特定属性文件中设置数据库uid,pwd,schema等,那么数据源是否能够理解其中的属性?
我可以同时使用application.properties和application-local.properties文件吗?
答案 0 :(得分:19)
是的,你可以。由于您使用的是spring,请查看@PropertySource anotation。
使用
对您的配置进行配置@PropertySource("application-${spring.profiles.active}.properties")
您可以随意调用它,如果您愿意,也可以添加多个属性文件。如果您有更多属于所有环境的集合和/或默认值(可以使用@PropertySource {...,...,...}编写),那就太好了。
@PropertySources(
@PropertySource("application-${spring.profiles.active}.properties"),
@PropertySource("my-special-${spring.profiles.active}.properties"),
@PropertySource("overridden.properties"))
然后您可以使用环境启动应用程序
-Dspring.active.profiles=test
在此示例中,name将替换为application-test-properties,依此类推。
答案 1 :(得分:5)
我们可以这样做:
application.yml 中的:
spring:
profiles:
active: test //modify here to switch between environments
include: application-${spring.profiles.active}.yml
application-test.yml 中的:
server:
port: 5000
和 application-local.yml :
server:
address: 0.0.0.0
port: 8080
然后春季启动将按我们的意愿启动我们的应用程序。
答案 2 :(得分:0)
我的观点,以这种不公平的方式要求开发人员一次性创建所有相关的环境,从而有可能将生产配置暴露给最终开发人员
根据12要素,不应仅针对环境而居住于环境中。
我们如何制作CI CD