首页 文章

Spring Boot应用程序中的环境特定application.properties文件

提问于
浏览
53

在我的Spring Boot应用程序中,我想创建特定于环境的属性文件 . 战争中我的应用程序的打包类型,我在嵌入式tomcat中执行它 . 我使用sts并从sts本身执行main .

  • 我可以拥有像应用程序一样的特定于环境的属性文件 - $ .properties?

在上面的例子中,env-value的值为local / devl / test / prod

  • 在哪里设置env-value文件?对于local,我可以通过sts将其设置为jvm参数

  • 谁在Spring Boot应用程序中读取application.properties .

  • 如何加载特定于环境的属性文件?对于ex - 如果我在环境特定属性文件中设置数据库uid,pwd,schema等,那么数据源是否能够理解其中的属性?

  • 我可以同时使用application.properties和application-local.properties文件吗?

3 回答

  • 3

    对于基于profile的属性,Spring Boot已经has support .

    只需添加 application-[profile].properties 文件并使用 spring.profiles.active 属性指定要使用的配置文件 .

    -Dspring.profiles.active=local
    

    这将加载 application.propertiesapplication-local.properties ,后者覆盖第一个属性 .

  • 109

    是的你可以 . 由于您使用的是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等 .

  • 17

    我们可以这样做:

    在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
    

    然后 Spring 季启动将按我们的意愿启动我们的应用程序 .

相关问题