外部Spring Boot Override属性

时间:2017-11-20 04:08:28

标签: spring spring-boot

我有一个WAR应用程序,已部署为Tomcat serverSpring Boot。 Tomcat服务器上当前已部署application.properties应用程序,其类路径上的application.properties文件覆盖了WAR中捆绑的文件。我需要为我的应用程序执行相同的操作,但我不能使用名称application.properties,因为它已经被使用,而我的应用程序正在尝试在Tomcat的类路径中使用Spring Boot,适用于其他Spring Boot应用程序。

有没有办法可以告诉myapp.properties在名为@SpringBootApplication public class ParameterManagerApplication { public static void main(String[] args) { new SpringApplicationBuilder(ParameterManagerApplication.class) .properties("spring.config.name:parameter-portal") .build() .run(args); } } 的类路径上查找属性文件或沿着这些行查找某些内容?

我尝试执行以下操作,但在部署为WAR时似乎无效。

{{1}}

2 个答案:

答案 0 :(得分:2)

默认情况下,Spring Boot会在这些位置查找application.properties文件。

    工作目录的
  1. / config subdir
  2. 工作目录
  3. 在类路径中配置包
  4. classpath root
  5. 因此,当我们将myserver.properties置于任何这些位置时,以下内容适用于我们。

    public static void main(String[] args){
         System.setProperty("spring.config.name","myserver");
         SpringApplication.run(Application.class,args);
    }
    

    否则,您可以尝试设置spring.config.location,如下所示。

    new SpringApplicationBuilder(Application.class)
                    .properties("spring.config.name:application,myserver",
                            "spring.config.location:classpath:/external/myproperties/")
                    .build().run(args);
    

答案 1 :(得分:0)

我们还可以选择定义我们存储这些属性的自定义源,否则查找默认位置(classpath:application.properties)。所以我们现在将上面的注释添加到现有的属性类中:

@Configuration
@PropertySource("classpath:configprops.properties")
@ConfigurationProperties(prefix = "dev")
public class ConfigProperties {
    // previous code
}

现在,属性文件中定义的任何属性(前缀 dev ,并且其中一个属性的名称相同)将自动分配给此对象。

#Simple properties
dev.host=mailer@mail.com
dev.port=9000

检查this