部署在Tomcat上的WAR文件未读取application.properties文件

时间:2019-08-15 21:31:07

标签: java spring spring-boot tomcat tomcat8

我已经使用Java中的Spring Boot Framework创建了一个演示REST API。我想将此API作为WAR文件部署在Tomcat 8上。该API已经配置为使用Spring Initializr编译为WAR文件。但是,部署API后,它不会从项目中读取application.properties文件。

  • 我已经尝试使用@PropertySource@PropertySources注释。
  • 我还尝试在pom.xml文件的<resources>标记中包含<build>标记。
  • 我还尝试将.properties("classpath:application.properties")添加到ServletInitializer

什么都没做


更新

在本文中,我以上下文路径为例。在我的实际应用程序中,我在application.properties中存储了一些属性,但应用程序未读取它们。


这是我的代码文件:

  • application.properties
server.servlet.context-path=/api
  • Application.java
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • ServletInitializer.java
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
  • User.java
@RestController
@RequestMapping("/user")
public class User {

    @GetMapping("")
    public String getUser() {
        return "User is here...";
    }
}

点击localhost:8080/demo/api/user URL应该可以提供我们想要的输出,但是可以提供404结果。而点击localhost:8080/demo/user可以得到所需的输出。 这意味着该应用程序不会读取application.properties文件,因为该文件中api的默认路由设置为/api

1 个答案:

答案 0 :(得分:0)

只有嵌入式tomcat支持server.servlet.context-path。如果要部署到外部tomcat,请遵循此处的准则来设置上下文路径:https://tomcat.apache.org/tomcat-8.0-doc/config/context.html

现在,验证application.properties是否捆绑在WAR文件中。为此,请提取或打开WAR文件。如果不包括在内,请验证您的构建文件是否资源插件正在复制资源文件。

如果application.properties包含在WAR中,请尝试读取应用程序中的其他属性。