SpringBoot:在部署war时找不到外部application.properties

时间:2018-01-31 17:54:07

标签: java spring tomcat spring-boot application.properties

尝试通过将war部署到tomcat容器,通过外部配置在Spring Boot应用程序中配置属性。

我的application.properties文件保存在tomcat_folder/conf/myappname/application.properties

使用此属性文件加载一些aws配置和数据库详细信息,如spring.datasource.url等,并希望将这些属性提供给整个应用程序,并且可以像@Value("${aws.access_key_id}")

一样访问

我还通过添加参数更改了tomcat Context.xml中的conf文件:

<Parameter name="spring.config.location" value="${catalina.base}/conf/myappname/application.properties" />

我的主应用程序类看起来像:

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyApplication.class);
    }

    public static void main(String[] args) {        
        SpringApplication.run(MyApplication.class, args);        
    }
}

在构建并部署war到webapps文件夹后,当我启动服务器时,出现错误

Caused by: java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist

不确定还要配置什么。

1 个答案:

答案 0 :(得分:0)

我已经测试了你的配置步骤,对我来说很好。

您可以使用其他方式测试您的配置:

  1. application.properties文件放入tomcat_folder/lib/application.properties
  2. 删除Context.xml
  3. 中的以下脚本

    <Parameter name="spring.config.location"value="${catalina.base}/conf/myappname/application.properties" />

    1. 启动服务器。
    2. 另外,您可以修改catalina.properties

      shared.loader=${catalina.base}/conf/myappname/

      application.properties文件保存在

      tomcat_folder/conf/myappname/application.properties