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前端即可使用!!!

相关内容

热门资讯

实测交流透视挂!宝玛大厅ai智... 实测交流透视挂!宝玛大厅ai智能透视挂教程,宝玛大厅破解软件经验(本来有挂辅助)1、每一步都需要思考...
总算了解辅助器!朱雀吴江三缺一... 总算了解辅助器!朱雀吴江三缺一ai智能透视辅助挂技巧,朱雀吴江三缺一好像是有挂(有辅助挂细节)朱雀吴...
今日公布透视!九五至尊大厅ai... 今日公布透视!九五至尊大厅ai智能透视插件,九五至尊大厅有没有透视挂窍门(切实有挂技术)1、在九五至...
玩家必看科普开挂!聚闲麻将ai... 玩家必看科普开挂!聚闲麻将ai智能透视辅助挂软件,聚闲麻将总是真的有挂(有辅助挂方式)聚闲麻将能透视...
据报道开挂!旅游娱乐ai智能开... 据报道开挂!旅游娱乐ai智能开挂工具,旅游娱乐辅助工具演示(一直有挂教学)1、全新机制【旅游娱乐ai...
一分钟揭秘开挂!决胜朋来麻将a... 一分钟揭秘开挂!决胜朋来麻将ai智能透视辅助挂教程,决胜朋来麻将真是真的是有挂(有辅助挂总结)1、首...
如何分辨真伪透视!红牛ai智能... 如何分辨真伪透视!红牛ai智能透视攻略,红牛是不是有挂经验(真是有挂技术)1、操作简单,无需红牛手机...
2分钟细说辅助器!江湖大庆麻将... 2分钟细说辅助器!江湖大庆麻将ai智能透视辅助挂攻略,江湖大庆麻将竟然是真的有挂(有辅助挂头条)1、...
总算清楚透视挂!老夫子厅ai智... 总算清楚透视挂!老夫子厅ai智能透视挂技巧,老夫子厅怎么开挂课程(好像发现有挂)老夫子厅破解侠是真的...
解密关于辅助!菜鸟麻将ai智能... 解密关于辅助!菜鸟麻将ai智能透视辅助挂脚本,菜鸟麻将总是存在有挂(有辅助挂存在)1、用户打开应用后...