java - 部署在 Tomcat 上的 WAR 文件不读取 application.properties 文件

标签 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注释。
  • 我也试过包括<resources><build> 中标记pom.xml 文件中的标记。
  • 我也试过添加 .properties("classpath:application.properties")ServletInitializer

没有效果


更新

我在本文中使用上下文路径作为示例。在我的实际应用程序中,我有一些属性存储在 application.properties 中,应用程序没有读取它们。


这是我的代码文件:

  • 应用程序属性
server.servlet.context-path=/api
  • 应用程序.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);
    }
}
  • 用户.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在该文件中。

最佳答案

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

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

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

关于java - 部署在 Tomcat 上的 WAR 文件不读取 application.properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57516504/

相关文章:

java-me - 如何在 J2ME 中编写客户端/服务器通信代码?

java - 是否可以在不使用其完整路径的情况下调用可执行 .jar 文件?

java - 排列发生器

java - 创建名称为 'entityManagerFactory' 的 bean 时出错

spring - 注释扫描不扫描类路径中的外部 jar

java - flink - 在键控窗口上折叠

java - Spring @Aspect 未正确 Autowiring

hibernate - InstantiationException:当使Entity字段在Kotlin中不可为空时,没有用于实体的默认构造函数

java - Spring 启动: How to get running port of application deployed on JBoss (or any app server)?

Apache Oltu 以外的 Java OAuthClient