java - 使用 Spring Boot 和 Tomcat 提供前端内容

标签 java spring-boot tomcat web-frontend

我将创建一个非常典型且对资源要求不高的前后端项目,我的一般问题是如何以更好的方式组织它。

后端部分提供REST API,这里会用到Java和Spring Boot。关于嵌入 Tomcat 或部署 WAR 的问题仍然悬而未决。我宁愿部署 WAR,除非另一个选项对我的情况有一些优势。对于开发,我使用 Eclipse 和 Maven,最终所有这些都将在 RHEL 上运行。

前端部分是一个网络应用程序,它实现了一个访问 API 的用户界面。在这里,我将使用 React。

许多教程建议使用 frontend-maven-plugin 通过 Spring Boot 的方式提供前端内容(使用 nodenpm 引擎盖下)。这看起来不错,紧凑。因此,我们有一个网络应用程序:

http://my.domain:8080/index.html

在以下位置访问 API:

http://my.domain:8080/api/...

但到目前为止,我发现没有一个建议在默认 http 端口 (80) 运行网络应用程序:

http://my.domain/index.html

我认为这是实际生产所必需的。

还有一些方法可以将调用从 80 端口重定向到 8080,但这看起来是不是一个棘手的补丁? Apache Tomcat 本身可以(显然)配置为在端口 80 上运行,但这对我来说也不太好。

那么,有没有一种方法可以将这样的项目组织为一个整体(最好由 Spring Boot 和 Tomcat 管理),而不是将其部分“分散”在不同的独立服务中?

最佳答案

您可以使用“webapp”文件夹和此配置:

@Configuration
public class MvcConfiguration implements WebMvcConfigurer {


@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("/index.html");
    }
}

关于java - 使用 Spring Boot 和 Tomcat 提供前端内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55848395/

相关文章:

java - Tomcat 耗尽虚拟机内存

eclipse - 服务器实例未配置。找不到类 : VersionLoggerListener

gwt - Tomcat 中找不到 native 库

java - Triangle_Strip 应该包裹吗?

JAVA netbeans 与组合框的问题

java - 无法在 Java 中使用带有 Https 的代理身份验证

java - Hazelcast 的组播发现

java - Spring boot - 如何通过每月数据刷新来改善应用程序的 api 响应时间

java - Spring Boot 响应实体不返回 JSON

java - JPA 实体是否存储对实体管理器的引用?