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

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...