1

我试图通过将war部署到tomcat容器来通过外部配置来配置我的Spring Boot应用程序中的属性。

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

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

我还通过添加参数更改了Context.xmltomcat 中的文件: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);        
    }
}

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

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

不知道还有什么要配置的。

4

1 回答 1

0

我已经测试了您的配置步骤,对我来说看起来不错。

您可以使用另一种方式来测试您的配置:

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

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

  1. 启动服务器。

此外,您还可以编辑catalina.properties

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

并将您的application.properties文件保存在

tomcat_folder/conf/myappname/application.properties

于 2018-02-02T02:56:31.610 回答