API 后端本地运行&部署教程

环境准备

本地启动

设置 Maven 完成 https://www.codefather.cn/post/1836689783992958977

使用 IDEA 打开项目

image-20250216170533991

初始化数据

连接本地 MySQL

image-20241030155405801 image-20241030155543228

点击 Download 下载 driver files

image-20241030155613559

输入,账号密码之后点击Test Connection 成功之后直接点击 OK

image-20241030155950071

找到根目录 sql 目录下面的 create_table.sql

image-20250216170825919

image-20250216171127888

安装依赖

  • 首先需要配置好本地 Mavne, 和阿里云镜像,要是没有配置的话可以看一下这篇文章
image-20241112134330112

然后可以在 Build 看到正在下载依赖

image-20241101132248226

选择 Java 版本

image-20241101132905013 image-20250216185612629

没有的话可以使用下面的 Download JDK

image-20241114112524129 image-20250216185720974
  • 本地没有 JDK 可以直接 Download JDK
  • 本地有 JDK 但是没识别到 Add JDK from disk 选着对应目录即可
  • 选择 Java >= 8 建议 8

安装 Nacos 2.2.0

下载之后解压到常用安装软件的目录

进入到 nacos/bin 目录下

text
复制代码
cd nacos/bin
image-20241102171050965

Windows

text
复制代码
startup.cmd -m standalone
image-20241102171233978

启动如果报错端口占用的话,重启电脑即可解决

Linux/mac

text
复制代码
sh startup.sh -m standalone

访问网址

image-20250216171621166

image-20250216171715296

默认账号和用户名都是 nacos

到此就算 nacos 启动成功🤩

image-20250216171731862

修改配置文件

配置文件在下面项目的 resources 目录

image-20241101133355503
  • application.yml 默认是本地运行时生效的配置
  • application-prod.yml 当在服务器指定 --spring.profiles.active=prod 才会生效,一般写线上配置,比如:线上 MySQL、Redis ...
  • application-test.yml 当在服务器指定 --spring.profiles.active=test 才会生效

MySQL

yml
复制代码
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/yuapi # yuapi 是数据库的名称 如果是远程 MySQL 例如: jdbc:mysql://192.129.11.11:3306/yuapi username: root # 用户名 password: 123456 # MySQL 设置的密码

Redis

yml
复制代码
spring: redis: database: 1 host: localhost # 如果线上改成线上 IP port: 6379 # Redis 具体运行端口,默认安装 6379 timeout: 5000 # password: 123456 # 密码,默认安装没有密码,如果服务器 Redis 有密码就修改

项目里面的 dubbo 相关的配置可以不用进行修改

yml
复制代码
dubbo: application: name: dubbo-springboot-demo-provider protocol: name: dubbo port: -1 registry: id: nacos-registry address: nacos://localhost:8848

本地运行

1、首先这个项目有

  • yuapi-interface 服务真实提供方
  • yuapi-gateway 网关
  • yuapi-common 公共依赖一些 model 和 nacos 调用的 service
  • yuapi-client-sdk 方便 yuapi-backend 方便发送向 gateway 发送请求
  • yuapi-backend 主项目

依次打开下面 4 个项目

image-20250216172743436

install

1、我们需要先 install 这两个 yuapi-client-sdkyuapi-common

image-20250216172656580

yuapi-common

image-20250216181931205

出现报错

image-20250216173350355

这个报错原因是因为 Java 版本的问题,通过 选择 Java 版本 章节进行设置成 Java8 即可

再次执行 install 命令 ,可以看到成功 BUILD SUCCESS

image-20250216182020055

2、install yuapi-client-sdk 项目

image-20250216182307151

启动

1、install 之后 yuapi-client-sdkyuapi-common 关闭即可

2、剩下的三个项目的启动顺序

首先 yuapi-backend 然后 yuapi-gateway 最后启动 yuapi-interface

3、需要确保 MySQL、Redis、Nacos 是运行状态


右下角可能会有 Lombok require enable annotation processing 直接点 Enable annotation processing 即可

image-20241101142832527

yuapi-backend

首先启动 yuapi-backend 否者先启动 yuapi-gateway 会报错导致启动不起来

image-20250216182632968

启动成功

image-20250216191157621

yuapi-gateway

1、修改 YuapiGatewayApplication 变成

java
复制代码
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) @EnableDubbo @Service public class YuapiGatewayApplication { // [程序员交流园地](https://www.codefather.cn/) 从 0 到 1 求职指导,斩获 offer!1 对 1 简历优化服务、200+ 真实简历和建议参考、25w 字前后端精选面试题、2000+ 求职面试经验分享 public static void main(String[] args) { SpringApplication.run(YuapiGatewayApplication.class, args); } // @Bean // public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { // return builder.routes() // .route("tobaidu", r -> r.path("/baidu") // .uri("https://www.baidu.com")) // .route("toyupiicu", r -> r.path("/yupiicu") // .uri("http://yupi.icu")) // .build(); // } }

启动 yuapi-gateway

image-20250216183830148

报错?!

text
复制代码
*************************** APPLICATION FAILED TO START *************************** Description: Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway. Action: Please set spring.main.web-application-type=reactive or remove spring-boot-starter-web dependency.

解决:修改 application.yml

image-20250216184101657

添加下面的配置即可

yml
复制代码
spring: main: web-application-type: reactive

如果使用 Java17 会出现在 yuapi-backendyuapi-gateway 报错

解决:切换到 Java8 或者根据这个 issue

text
复制代码
java.lang.reflect.InaccessibleObjectException: Unable to make field private java.lang.String java.lang.StackTraceElement.fileName accessible: module java.base does not "opens java.lang" to unnamed module @65d09a04 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.getFieldMap(JavaDeserializer.java:340) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.<init>(JavaDeserializer.java:80) at com.alibaba.com.caucho.hessian.io.StackTraceElementDeserializer.<init>(StackTraceElementDeserializer.java:56) at com.alibaba.com.caucho.hessian.io.SerializerFactory.<clinit>(SerializerFactory.java:189) at org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer.createSerializerFactory(DefaultHessian2FactoryInitializer.java:26) at org.apache.dubbo.common.serialize.hessian2.dubbo.AbstractHessian2FactoryInitializer.getSerializerFactory(AbstractHessian2FactoryInitializer.java:46)

image-20250216185103656

解决办法:

1)使用 Java8 参考 选择 Java 版本

image-20250216185801854

2)仍然使用 Java17

解决办法

image-20250216190020824 image-20250216190206943

image-20250216190308111

然后将下面的复制到 VM options 里面 ,重新启动项目即可

text
复制代码
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.math=ALL-UNNAMED
image-20250216190402821

yuapi-interface

这个启动就相对简单,直接启动即可

image-20250216190929147

启动成功

image-20250216191055017

测试

打开前端进行测试

image-20250216214814051

用接口文档测试比较麻烦,建议直接用前端进行测试

测试需要 SQL 数据,首先需要执行一下下面的 INSERT 语句

User 表

登录密码是 11111111

sql
复制代码
INSERT INTO yuapi.user (id, userName, userAccount, userAvatar, gender, userRole, userPassword, accessKey, secretKey, createTime, updateTime, isDelete) VALUES (1, null, 'leikooo', null, null, 'admin', 'f8de235116ca2ec0b8ee885b5c743072', 'e7e813d620ca45d94edbee2e50001dc7', '401e2ead47bf3fd74de46581f421cd69', '2025-02-16 21:25:31', '2025-02-16 21:45:38', 0);

User-info 表

sql
复制代码
INSERT INTO yuapi.interface_info (id, name, description, url, requestParams, requestHeader, responseHeader, status, method, userId, createTime, updateTime, isDelete) VALUES (1, 'api', 'api', 'http://localhost:8123/api/name/user', '{"username": "aaa"}', '{"Content-Type":"application/json"}', '{"Content-Type":"application/json"}', 1, 'POST', 1, '2025-02-16 21:32:05', '2025-02-16 21:47:11', 0);

user-interface-info 表,这个表的内容是,某一个接口的剩余调用次数

sql
复制代码
INSERT INTO yuapi.user_interface_info (id, userId, interfaceInfoId, totalNum, leftNum, status, createTime, updateTime, isDelete) VALUES (1, 1, 1, 102, 98, 0, '2025-02-16 21:46:15', '2025-02-16 21:47:39', 0);

制作 + 上传 JAR 包

image-20250216215421414

Lifecycle -> package 双击

之后我们就可以在 target 目录下面找到打包好的 jar 包

我们需要执行 pakage 的有三个项目

1、yuapi-interface

2、yuapi-gateway

3、yuapi-backend

这三个项目我们都需要分别 pakage 然后上传到服务器上,才能正常运行全部功能


如果报错的话:

  1. 删除 target 目录(IDEA 右键删除即可),重新打包尝试
  2. Maven -> Lifecyle -> clean
  3. 退出 IDEA 在文件管理器找到该项目的 .idea 文件右键删除 ,然后重新打开 IDEA 重新走一遍流程
image-20240928104016670 image-20240928104101415

部署

后面可以参考这篇文章 『 后端部署(通用) 』

相关专栏

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
Spring 团队开发者布道师 Josh Long,从 2011 年起每周二坚持写 This Week in Spring https://spring.io/authors/joshlong,大概 15 年半从未间断,到现在大概写了 800 期以上😱 大佬在采访里他说,写博客不是额外负担,而是逼自己整理每周所学的「强制机制」——反正本来就会刷社区动态,写出来既方便自己,也帮到别人。更重要的是 Spring 一直在变:微服务、AI……永远有新东西可聊,停一周就容易掉队。一旦养成习惯,坚持往往比重新开始更容易。 这种级别的大佬都还在用周更逼自己不掉队,我更没理由再拖了。还有之前左耳朵耗子大佬说的 ARTS 打卡,我老实说只撑了两周,真的需要捡起来了,加油✊
10
试了下 Grok CLI:curl -fsSL https://x.ai/cli/install.sh | bash 虽然功能不如 Claude Code 全,但能免费用 Grok 4.5 啊😍。一行 prompt 大概 3 分钟就生成出来了而且没有报错:" Three.js UMD 构建。正在实现完整的太阳系模拟(含自定义轨道控制,兼容本地打)"。 大伙可以访问试试:https://solar-system-seven-mocha.vercel.app/
4
彻底搞懂 Spring AI Tool Calling:从底层协议到源码执行全流程
7
别用 JWT 管理用户会话
9
没想到 Bot 占全球 HTML 流量的 50% 以上了,被这个比例给震惊到了。还有开发者在评论区说自己的网站「每天」访问量 250k 但是 Cloudflare 显示真实的用户只有 150 个😱 数据来源:https://radar.cloudflare.com/traffic#bot-vs-human
5
下载 APP