我有一个WAR
应用程序,已部署为Tomcat server
到Spring 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}}
答案 0 :(得分:2)
默认情况下,Spring Boot会在这些位置查找application.properties
文件。
因此,当我们将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