前后端打包一起部署(springboot)

前后端一起打包发布

可以参考这个也行: 博客

先排错



@EnableWebMvc 的使用问题


详解参考:

(101条消息) Spring注解@EnableWebMvc使用坑点解析_zxc123e的博客-CSDN博客_@enablewebmvc


结论

Spring Boot 默认提供Spring MVC 自动配置,不需要使用@EnableWebMvc注解
如果需要配置MVC(拦截器、格式化、视图等) 请使用添加@Configuration并实现WebMvcConfigurer接口.不要添加@EnableWebMvc注解。
@EnableWebMvc 只能添加到一个@Configuration配置类上,用于导入Spring Web MVC configuration



使用访问 404 问题

Spring Boot在application文件中的配置失效
在Spring Boot的自定义配置类加上@EnableWebMvc后,发现自动配置的静态资源路径(classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/)资源无法访问。
通过查看@EnableWebMvc的源码,可以发现该注解就是为了引入一个DelegatingWebMvcConfiguration 配置类,而DelegatingWebMvcConfiguration又继承于WebMvcConfigurationSupport。也就是说,如果我们使用@EnableWebMvc就相当于导入了WebMvcConfigurationSupport类,这个时候,Spring Boot的自动装配就不会发生了,我们能用的,只有WebMvcConfigurationSupport提供的若干个配置。其实不使用@EnableWebMvc注解也是可以实现配置Webmvc,只需要将配置类继承于WebMvcConfigurationSupport类即可。

当使用@EnableWebMvc时,加载的是WebMvcConfigurationSupport中的配置项。

当不使用@EnableWebMvc时,使用的是WebMvcAutoConfiguration引入的配置项。

static 文件

  • 先看自己的 target 文件是否有前端资源,有就不需要导出了
  • 还有访问前端的 index.html 看他是否有样式



前端打包

  • vue打包,亲测有效
可以修改vue.config.js文件里的publicPath修改为publicPath: './',
  • 这里使用的是 React, vue 的网上就比较多了

  1. 添加 "homepage": "."
"homepage": ".",

image-20221014084734369


  1. .因为我这react项目有用到react-router-dom,因此要把所有BrowserRouter改成HashRouter(原因你们自己去查,我这就不多说了,这步不改的话打包后运行的项目路由没法正常跳转):

在这里插入图片描述


  1. 打包
  • 复制所有的 build 文件夹下面的到 Java 的 static 下面
npm run build

image-20221014084917879

image-20221014085031814



后端打包


  • 去掉 @EnableWebMvc

  • 去掉测试阶段,然后打包


image-20221014085223068



服务器部署


  1. 记得更改前端请求后端的地址

  1. 使用 Dockerfile 部署单个

Dockerfile 的内容

FROM openjdk:8
 
COPY ./invigilate-0.0.1-SNAPSHOT.jar /root/ok.jar
CMD ["--server.port=8082"]
 
EXPOSE 8082
 
ENTRYPOINT ["java", "-jar", "/root/ok.jar"]

构建镜像

docker build -t ha .

运行镜像

docker run -it -p 8082:8082 ha
posted @ 2022-10-14 16:49  雨同我  阅读(1230)  评论(0编辑  收藏  举报