Spring Boot毕设项目从零搭建到部署:这5个坑我帮你填平了
大家好,我是阿泽。
最近帮学弟们改毕设,发现一个扎心的事实:80%的人把时间花在了不该花的地方。
配环境配三天、框架选错推倒重来、本地跑通了部署到服务器全崩……这些坑我当年读大学时一个没落下,现在带毕设,每年看一批人踩同样的坑。
今天不聊虚的,直接以Spring Boot + Vue + MySQL这套最经典的毕设架构为例,从项目初始化 → 代码编写 → 本地测试 → 服务器部署,把最容易踩的5个坑掰开揉碎讲清楚。
哪怕你刚学Java,跟着这篇文章走,至少能少熬10个通宵。
坑1:项目建好了,启动报端口被占用或数据库连不上
症状
控制台红字:Web server failed to start. Port 8080 was already in use.
或者:Access denied for user 'root'@'localhost' (using password: YES)
原因
端口冲突或数据库配置不对,但根本原因是你对配置文件不熟。
填坑步骤
1. 修改端口
在 application.properties 或 application.yml 中加:
server.port=8081
或者
server:
port: 8081
2. 检查数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/yourdb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=你的密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
注意:yourdb 要在MySQL里提前建好,编码用 utf8mb4。
3. 启动类加排除(如果报DataSource相关错)
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
这只是临时跳过,真正用数据库时还得配上。
阿泽说
配置这东西,错一个字符就起不来。我一般会让学生先写一个最简单的Hello World接口,不连数据库,确保Spring Boot能跑通,再一步步加MyBatis、加业务。分步验证,别一口吃成胖子。
坑2:用MyBatis,结果Mapper接口一直报Invalid bound statement
症状
调用Mapper时抛异常:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.mapper.UserMapper.selectList
原因
MyBatis找不到XML文件,或者Mapper接口和XML没绑定。
填坑步骤
1. 检查XML文件路径
Maven项目里,XML文件要放在 resources/mapper/ 下,且包名路径要和Mapper接口一致。
比如接口 com.xxx.mapper.UserMapper,XML就应该是 resources/mapper/UserMapper.xml。
2. 检查application.yml配置
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.xxx.entity
3. 在启动类上加@MapperScan
@SpringBootApplication
@MapperScan("com.xxx.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
阿泽说
还有个野路子——如果你实在不想配XML,可以直接用MyBatis-Plus,它帮你省掉XML,单表操作直接调用BaseMapper。毕设用MP,效率翻倍。
坑3:跨域问题,前端Vue调接口一直报错
症状
浏览器F12看到 Access-Control-Allow-Origin 错误,明明接口在Postman能通,浏览器就不行。
原因
浏览器的同源策略,后端没允许跨域。
填坑步骤
Spring Boot里加一个配置类:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("")
.maxAge(3600);
}
}
或者用 @CrossOrigin 注解加在Controller类上,但建议用全局配置,省事。
注意:如果用了Spring Security,还要在Security配置里放行OPTIONS请求,否则还是会报错。
坑4:本地跑得飞起,一打包部署到服务器就崩
症状
在IDEA里一切正常,mvn clean package打成jar包,放到服务器上 java -jar xxx.jar,启动报错,要么说找不到类,要么说配置文件没加载。
原因
打包插件没配好,或者配置文件没打到jar里。
填坑步骤
1. 确保pom.xml里有spring-boot-maven-pluginorg.springframework.bootspring-boot-maven-plugin
这个插件会把所有依赖打包进jar,并且生成可执行的fat jar。
2. 配置文件放对位置
application.yml 一定要在 src/main/resources 下,打包后它会出现在jar的根目录。
3. 部署时指定外部配置文件(推荐)
在jar包同目录放一个 application-prod.yml,然后用
java -jar xxx.jar --spring.profiles.active=prod
这样你可以改配置而不用重新打包。
阿泽说
还有个常见问题——服务器MySQL版本和本地不一致,导致驱动报错。建议服务器MySQL版本和本地一致,或者用兼容的驱动。
坑5:项目跑起来了,但外网访问不到
症状
服务器上启动成功,curl localhost:8080 有返回,但用公网IP访问超时。
原因
云服务器的防火墙没开端口,或者阿里云/腾讯云的安全组策略没放行。
填坑步骤
1. 检查服务器防火墙
CentOS 7
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
或者直接关闭防火墙(不推荐,测试时可用)。
2. 云控制台安全组
登录阿里云/腾讯云,找到你的实例,在安全组中添加一条规则:
方向:入方向
协议:TCP
端口:8080
授权对象:0.0.0.0/0
3. 检查项目是否监听了0.0.0.0
Spring Boot默认就是 0.0.0.0,但如果改了配置,确保不是 127.0.0.1。
写在最后
这5个坑,几乎每个找我救急的学弟都踩过至少两个。
毕设这东西,说难不难,但没人指路的话,一个配置能卡三天。很多时候不是你能力不行,是你不知道问题出在哪。
如果你现在正在做Spring Boot毕设,遇到了报错不知道怎么解决;或者想让我帮你看看项目结构合不合理、框架选得对不对——
私信我,发你项目的报错截图/代码结构,我帮你免费诊断一次。
哪怕最后不是我带,至少让你知道下一步往哪走。
—— 阿泽,前大厂后端,现专治毕设疑难杂症
更多推荐



所有评论(0)