🏆本文收录于《Spring Boot从入门到精通》,专门攻坚指数提升,2023 年国内最系统+最强(更新中)。
本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
前言
随着互联网的快速发展,Java作为一种广泛应用的编程语言,在互联网开发领域也占有着重要地位。而随着互联网应用的不断增多,部署也变得越来越重要。传统的部署方式,如WAR包部署,往往需要在服务器上安装Tomcat等Web服务器,而这种方式无法快速部署,也无法与Docker等容器技术完美结合。因此,在这里我们推荐使用Spring Boot框架,通过打包成Jar包快速、方便地部署到Linux服务器上。本文将介绍如何将Spring Boot应用打包为Jar包,并在Linux服务器上进行后台启动部署,实现日志的滚动查看和输出至实体文件保存。
摘要
本文主要介绍了Spring Boot框架的使用,在将应用打包成Jar包后,如何在Linux服务器上进行后台启动部署,并实现滚动日志查看和输出至实体文件保存。通过本文的介绍,读者可以熟练掌握Spring Boot框架的使用,并在实际应用中灵活运用。
简介
Spring Boot是由Pivotal公司开发的一款开箱即用的框架,可以快速创建基于Spring的Java应用程序。Spring Boot框架可以通过简单的配置,实现快速、轻量级的应用开发。它内置了大量常用的第三方库和工具,如Tomcat、Logback等,并提供了自动配置的功能,可以减少开发人员的工作量。同时,Spring Boot支持多种部署方式,包括打包成Jar包和War包等。打包成Jar包可以快速地进行部署,满足云计算和容器化等现代化应用的需求。
源代码解析
下面是一个简单的Spring Boot应用的示例代码:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@RestController
class HelloWorldController {
@GetMapping("/")
public String hello() {
return "Hello, World!";
}
}
}
上述代码定义了一个Spring Boot应用,并在其中定义了一个HelloWorldController,用于处理请求并返回响应。使用Spring Boot框架,可以轻松地搭建一个Web应用,并实现响应式开发。
应用场景案例
Spring Boot适用于各种类型的应用场景,包括Web应用、批处理、消息驱动等。下面以一个Web应用为例进行介绍。
某公司开发了一个在线商城平台,用户可以通过该平台进行购物和支付等操作。为了提高用户的体验和安全性,该公司使用了Spring Boot框架进行开发。具体的应用场景如下:
- 用户可以通过Web应用进行注册、登录、浏览商品等操作;
- 用户可以在平台上选购商品并进行结算;
- 在用户提交订单时,系统需要进行库存检查、支付校验等操作;
- 系统需要实现支付宝、微信等第三方支付渠道的接入;
- 系统需要实现订单管理、商品管理、用户管理等后台管理功能。
通过使用Spring Boot框架,该公司成功地实现了在线商城平台应用的开发,并在实际使用中获得了较好的用户反馈。
优缺点分析
优点
- Spring Boot框架提供了自动配置的功能,可以快速地进行应用开发;
- Spring Boot框架内置了很多常用的第三方库和工具,如Tomcat、Logback等,可以减少开发人员的工作量;
- Spring Boot框架支持多种部署方式,包括打包成Jar包和War包等,可以满足不同需求;
- 打包成Jar包的部署方式可以快速地进行部署,适合云计算和容器化等现代化应用的需求;
- Spring Boot框架提供了丰富的文档和社区支持,可以快速解决开发中的问题。
缺点
- Spring Boot框架过于自动化,可能会导致开发人员对底层技术的理解不够深入;
- 依赖注入的使用可能会导致较大的内存开销;
- Spring Boot框架的自动配置可能会导致配置冲突或不可预测的行为。
类代码方法介绍
下面是上述示例代码中的主要类和方法介绍:
Application类
Application类是Spring Boot应用的入口类。该类使用@SpringBootApplication注解进行标注,并实现了main方法,用于启动Spring Boot应用。主要方法如下:
SpringApplication.run方法
public static ConfigurableApplicationContext run(Class<?> primarySource, String... args)
该方法用于启动Spring Boot应用,其中primarySource参数为主配置类,args参数为可选的命令行参数。该方法会返回一个ConfigurableApplicationContext对象,用于管理Spring应用上下文。
HelloWorldController类
HelloWorldController类是一个简单的Controller类,用于处理Web请求并返回响应。主要方法如下:
@RestController注解
@RestController
该注解用于标记HelloWorldController类为一个Controller类,并将其所有方法的返回值转换为JSON格式的响应。
@GetMapping注解
@GetMapping("/")
public String hello() {
return "Hello, World!";
}
该注解用于标记hello方法为处理HTTP GET请求的方法,并将其映射到Web应用的根路径。hello方法返回一个字符串,用于表示响应内容。
测试用例
下面是一个简单的测试用例,用于测试Spring Boot应用的启动和Web请求的响应:
public class ApplicationTest {
@Test
public void testHelloWorld() throws Exception {
String url = "http://localhost:8080/";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getBody()).isEqualTo("Hello, World!");
}
}
上述代码使用JUnit框架进行单元测试,测试了Web应用在启动后,能否正确地响应HTTP GET请求并返回"Hello, World!"字符串。
Spring Boot之Jar包Linux后台启动部署及滚动日志查看,日志输出至实体文件保存
打包Jar包
在进行Linux服务器上的启动部署前,需要先将Spring Boot应用打包成Jar包。打包Jar包的方式有很多种,这里我们推荐使用Maven进行打包。打包的步骤如下:
- 在项目根目录下创建一个名为pom.xml的Maven配置文件,并添加以下内容:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency```xml
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 在命令行中进入项目的根目录,并执行以下命令进行打包:
mvn package
执行成功后,将在target目录下生成一个名为demo-0.0.1-SNAPSHOT.jar的可执行Jar包。
Linux服务器上的后台启动部署
-
将打包好的Jar包上传至Linux服务器上,并进入Jar包所在目录。
-
使用以下命令进行后台启动:
nohup java -jar demo-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
nohup命令可以使应用在后台启动,并将输出重定向至/dev/null,避免控制台输出的干扰。
- 可以使用以下命令查看应用的运行状态:
ps -ef | grep java
该命令会列出所有正在运行的Java进程,其中包括我们刚刚启动的Spring Boot应用。
- 如果需要停止应用,可以使用以下命令:
ps -ef | grep java | grep demo-0.0.1-SNAPSHOT.jar | awk '{print $2}' | xargs kill
该命令会查找正在运行的名为demo-0.0.1-SNAPSHOT.jar的Java进程,并终止其运行。
日志滚动查看及输出至实体文件保存
在进行应用部署和运行过程中,日志的查看和保存也是非常重要的。Spring Boot框架提供了内置的日志系统,可以方便地进行日志输出和管理。
配置日志级别和输出位置
在application.properties文件中可以进行Spring Boot日志的配置。下面是一个示例配置:
# 日志级别
logging.level.root=INFO
logging.level.com.example.demo=DEBUG
# 输出位置
logging.file.path=/var/log/demo/
logging.file.name=demo.log
上述配置将日志级别设置为INFO,并将com.example.demo包下的日志级别设置为DEBUG。日志的输出位置为/var/log/demo/目录下,并将日志文件命名为demo.log。
日志滚动查看
在Linux服务器上,可以使用tail命令查看最新的日志输出:
tail -f /var/log/demo/demo.log
该命令可以实时输出日志文件中的最新内容,方便我们进行实时监控和调试。
日志输出至实体文件保存
除了在控制台中进行滚动查看外,我们还可以将日志输出至实体文件进行保存,方便后续的分析和查询。
在Logback框架中,我们可以通过配置appender将日志输出至实体文件。下面是一个示例配置:
<configuration>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/demo/demo.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/demo/demo.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date:%level:%logger:%msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="file" />
</root>
</configuration>
上述配置将日志输出至/var/log/demo/demo.log文件中,并使用TimeBasedRollingPolicy进行日志滚动。具体地,每天生成一个新的日志文件,最多保留30个日志文件。日志的输出格式为%date:%level:%logger:%msg。
通过以上配置,我们可以在Linux服务器上将Spring Boot应用的日志输出至实体文件进行保存,方便后续的查询和分析。
总结
本文介绍了如何将Spring Boot应用打包成Jar包,并在Linux服务器上进行后台启动部署,并实现了日志的滚动查看和输出至实体文件保存。通过本文的介绍,读者可以快速掌握Spring Boot框架的使用,并在实际应用中灵活运用。
附录源码
如上涉及所有源码均已上传同步在「GitHub」,提供给同学们一对一参考学习,辅助你更迅速的掌握。
☀️建议/推荐你
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,从入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
📣关于我
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。