SpringBoot接口项目部署 SpringBoot编写接口部署到服务器 CentOS服务器部署SpringBoot接口 SpringBoot接口部署 SpringBoot部署例子 Jar包部署
创始人
2025-01-17 02:04:03
0

SpringBoot 项目 接口部署服务器

image.png
两种打包方式:jar包和War包。
下面编写一个接口访问数据库的例子:


image.png
image.png

1、先写Mybatis配置文件,与SpringBoot整合

# 配置Mybatis数据源 spring:   datasource:     url: jdbc:mysql://XXX.XXX.XXX.252:3306/数据库名称?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false     username: 用户名     password: 密码     driver-class-name: com.mysql.cj.jdbc.Driver 

2、开始编写实体层、控制层、数据访问层

2.1实体层(以一个表为例):

image.png

package com.tg.springbootprojectpack.Entity;  import java.util.Date; import java.io.Serializable;  /**  * (Appkm)实体类  *  * @author TGjava  */ public class Appkm implements Serializable {     private static final long serialVersionUID = 690888387321209032L;          private Integer id;     /**      * 归属用户      */     private Integer upid;     /**      * 应用ID      */     private Integer appid;     /**      * 卡密      */     private String kami;     /**      * 卡密类型      */     private String type;          private String note;     /**      * 卡密对应的值      */     private Integer amount;     /**      * 使用者      */     private String user;     /**      * 使用时间      */     private Long useTime;     /**      * 结束时间      */     private Long endTime;     /**      * 添加时间      */     private Date addtime;     /**      * 是否使用      */     private String kmUse;     /**      * 解绑次数      */     private Integer kmChange;     /**      * 单码卡密类型      */     private String kmTime;     /**      * 使用者IP      */     private String userIp;     /**      * 卡密解绑时间      */     private Long kmChangeTime;     /**      * 状态      */     private String state;       public Integer getId() {         return id;     }      public void setId(Integer id) {         this.id = id;     }      public Integer getUpid() {         return upid;     }      public void setUpid(Integer upid) {         this.upid = upid;     }      public Integer getAppid() {         return appid;     }      public void setAppid(Integer appid) {         this.appid = appid;     }      public String getKami() {         return kami;     }      public void setKami(String kami) {         this.kami = kami;     }      public String getType() {         return type;     }      public void setType(String type) {         this.type = type;     }      public String getNote() {         return note;     }      public void setNote(String note) {         this.note = note;     }      public Integer getAmount() {         return amount;     }      public void setAmount(Integer amount) {         this.amount = amount;     }      public String getUser() {         return user;     }      public void setUser(String user) {         this.user = user;     }      public Long getUseTime() {         return useTime;     }      public void setUseTime(Long useTime) {         this.useTime = useTime;     }      public Long getEndTime() {         return endTime;     }      public void setEndTime(Long endTime) {         this.endTime = endTime;     }      public Date getAddtime() {         return addtime;     }      public void setAddtime(Date addtime) {         this.addtime = addtime;     }      public String getKmUse() {         return kmUse;     }      public void setKmUse(String kmUse) {         this.kmUse = kmUse;     }      public Integer getKmChange() {         return kmChange;     }      public void setKmChange(Integer kmChange) {         this.kmChange = kmChange;     }      public String getKmTime() {         return kmTime;     }      public void setKmTime(String kmTime) {         this.kmTime = kmTime;     }      public String getUserIp() {         return userIp;     }      public void setUserIp(String userIp) {         this.userIp = userIp;     }      public Long getKmChangeTime() {         return kmChangeTime;     }      public void setKmChangeTime(Long kmChangeTime) {         this.kmChangeTime = kmChangeTime;     }      public String getState() {         return state;     }      public void setState(String state) {         this.state = state;     }      public YixiAppkm() {     }      public YixiAppkm(Integer id, Integer upid, Integer appid, String kami, String type, String note, Integer amount, String user, Long useTime, Long endTime, Date addtime, String kmUse, Integer kmChange, String kmTime, String userIp, Long kmChangeTime, String state) {         this.id = id;         this.upid = upid;         this.appid = appid;         this.kami = kami;         this.type = type;         this.note = note;         this.amount = amount;         this.user = user;         this.useTime = useTime;         this.endTime = endTime;         this.addtime = addtime;         this.kmUse = kmUse;         this.kmChange = kmChange;         this.kmTime = kmTime;         this.userIp = userIp;         this.kmChangeTime = kmChangeTime;         this.state = state;     }   }   

2.2控制层:

image.png

package com.tg.springbootprojectpack.Controller;  import com.tg.springbootprojectpack.Entity.YixiAppkm; import com.tg.springbootprojectpack.Mapper.AppkmMapper; import com.tg.springbootprojectpack.util.ApiResponse; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  import java.util.List;  @RestController @RequestMapping("km") public class AppkmController {      @Resource //依赖注入     private AppkmMapper appkmMapper;      @RequestMapping("getInfo")     public Object getAllInfo(){         try {             List allKm = appkmMapper.getAllKm();             if (allKm != null){                 System.out.println("查询完毕");             }             return ApiResponse.success(allKm);         }catch (Exception e){             return ApiResponse.error(500,e.getMessage());         }     } }  //ApiResponse是一个api请求的处理类,把从数据库的数据拿出来整理成JSON格式 //搭配响应码,得到真实的接口数据 

2.3数据交互层:

目前例子为春注解开发,所以暂时不写mapper.xml配置文件
image.png

package com.tg.springbootprojectpack.Mapper;  import com.tg.springbootprojectpack.Entity.YixiAppkm; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;  import java.util.List;  @Mapper public interface AppkmMapper {     @Select("select * from appkm")     List getAllKm(); }  

3、三层都写好以后,直接运行项目

查看控制台有无报错情况,正常如下:
image.png

3.1、直接去本地浏览器测试接口情况

http://localhost:1000/km/getInfo 

可以看到已经查询出数据了:
image.png

4、直接打包成jar包;

image.png
双击package
image.png
如图则打包成功去对应路径查看;
image.png

5、把jar包,放到服务器上,目录随意

image.png

6、检查服务器Java环境,我这边用的服务器是CentOS7

image.png
注意:这里的Java的版本要和你本地打包的Java版本一致;

7、使用Nohup命令来运行我们目录下的jar包

7.1nohup命令详解

nohup是“no hang up”的缩写,意味着不挂断运行。当使用nohup运行命令时,即使你退出登录或关闭终端,该命令仍然会在后台运行。nohup的基本用法是在命令前加上nohup并在命令后加上**&**符号,以使命令在后台运行。
命令格式如下:

nohup command > output.file 2>&1 &  举例:nohup java -jar SpringBootProjectPack-0.0.1-SNAPSHOT.jar > myapp.log 2>&1 & 

这里是它的各个部分的解释:

  • nohup: 命令,用于运行后续的命令并忽略挂断信号。
  • command: 你想要在后台运行的命令,例如java -jar your-app.jar
  • > output.file: 将标准输出(stdout)重定向到output.file文件中。这意味着程序的输出将>会被写入到这个文件,而不是显示在终端上。
  • 2>&1: 将标准错误(stderr)也重定向到同一个文件中。这样,无论是正常的输出还是错误信>息,都会被记录在同一个文件里。
  • &: 将命令放到后台执行。

image.png

8、使用tail 命令查看,jar包运行状态

8.1基本用法

  • 查看文件的最后10行:
tail filename 
  • 查看文件的最后N行:
tail -n N filename 

这里,**N**是你想要查看的行数。如果你想看更多或更少的行,只需将**N**替换为相应的数字。

8.2实时跟踪文件的更新

  • 使用**-f**选项来实时查看文件的新增内容:
tail -f filename 

这个命令非常适合跟踪日志文件的实时更新。当文件有新内容添加时,tail会自动显示这些新增的内容。

8.3查看多个文件

  • tail也可以用来同时查看多个文件的尾部内容:
tail -n N file1 file2 file3 

这会显示每个文件的最后N行。

8.4组合使用**-f-n**

  • 你可以组合使用**-f-n**选项,既实时跟踪文件更新,又控制显示的行数:
tail -f -n N filename 

这对于在文件更新频繁时只关注最近的几条记录特别有用。

8.5tail的其他选项

  • tail还有其他一些有用的选项,比如**–pid=PID**用于在指定的PID进程终止时停止跟踪文件,这在监控某个特定进程的日志输出时非常有用。

image.png

9、可以通过项目配置的SpringBoot Actuator来查看项目的健康情况

9.1访问查询出来的端口:http://主机名:1000/actuator

image.png

9.2访问查询出来的端口:http://主机名:1000/actuator/health

image.png
当Status为UP时,说明项目正常。

10、测试已经写好的接口

在这里插入图片描述

到此写好的项目就部署到自己的服务器上了,把接口整合到Web前端即可使用!!!

相关内容

热门资讯

一秒答解!aapoker辅助工... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款游戏中打...
科普!边锋老友圈怎么开辅助,h... 科普!边锋老友圈怎么开辅助,hhpoker是真的还是假的,高科技教程(有挂细节)-哔哩哔哩;边锋老友...
详细一下!小南四川长牌辅助,w... 详细一下!小南四川长牌辅助,wepoker辅助脚本,都是真的是有挂(哔哩哔哩)1、每一步都需要思考,...
推荐几款新版!拱趴大菠萝机器人... 推荐几款新版!拱趴大菠萝机器人,we-poker辅助软件教程,其实真的有挂(真的有挂)1、免费辅助多...
研究成果!wepoker破解版... 研究成果!wepoker破解版内购,wpk透视插件,普及教程(有挂分析)-哔哩哔哩;亲真的是有正版授...
科普一下!福建大玩家十三水辅助... 科普一下!福建大玩家十三水辅助,陕麻圈脚本辅助,一贯存在有挂(哔哩哔哩)1、上手简单,内置详细流程视...
必知教程!wpk辅助器是真的吗... 必知教程!wpk辅助器是真的吗,hhpoker开挂教程,切实真的有挂(有挂猫腻)破解侠是真的助透视。...
科技介绍!拱趴大菠萝技巧,红龙... 科技介绍!拱趴大菠萝技巧,红龙poker辅助平台,系统教程(发现有挂)-哔哩哔哩;拱趴大菠萝技巧AI...
解谜一下!乐平包王讨赏辅助,逸... 解谜一下!乐平包王讨赏辅助,逸趣鄱阳翻精辅助,原来是真的有挂(哔哩哔哩)1.乐平包王讨赏辅助 选牌创...
信息共享!德州透视插件,wep... 信息共享!德州透视插件,wepoker私人局辅助器怎么用,果然是真的有挂(真实有挂)1、wepoke...