一、准备开发环境

SpringBoot2.x是基于Java8来编写的,且在构建项目时默认使用Maven方式,所以也需要配置Maven环境变量;

在开发spring boot项目中实践难点有哪些方面_java

在开发spring boot项目中实践难点有哪些方面_java_02

二、创建新的SpringBoot项目

注意,无论何种方式,都需要连网才可以创建项目;

初始化一个新的SpringBoot项目,有以下三种方法:

  1. 使用IDEA内置的Spring Initializr创建(File -> New -> Project -> Spring Initializr)
  2. 创建基础Maven项目,修改pom.xml添加spring-boot-parent
  3. 访问 https://start.spring.io 选择依赖后,生成项目并下载

建议使用第一种方式,因为简单快捷,IDEA内部也是通过 https://start.spring.io 这种方式将构建完成的zip文件下载到本地然后解压

三、熟悉打包方式

程序打包一般有两种形式:

  1. 传统的方式是外置Tomcat,将应用程序打包成一个xx.war文件,该文件内只有应用程序源码编译后的.class以及配置文件
  2. SpringBoot提供了另外一种打包方式,在pom.xml内通过配置maven plugin,执行mvn package打包命令时会将src/main/javasrc/main/resources目录下的全部文件进行打包,最终生成一个xx.jar的文件,由于SpringBoot打包时默认会将Tomcat的相关依赖一并放入到xx.jar内,所以通过java -jar xx.jar命令行的方式可以直接运行

springBoot项目的pom.xml文件中一般默认配置maven plugin打包插件,具体代码如下

在开发spring boot项目中实践难点有哪些方面_spring boot_03

需要注意的是,spring-boot-maven-plugin插件打包完成后生成的文件名默认的格式为:<artifactId> + <version>.jar,如果这并不是你想要的格式,可以通过如下方式进行自定义:

在开发spring boot项目中实践难点有哪些方面_java_04

另外,由于项目打包过程中会自动运行测试,实际工作中,由于模块代码非常多,如果运行测试,会导致打包非常慢,所以如果想要在打包的过程中跳过测试,则可以在pom.xml中做如下配置:

在开发spring boot项目中实践难点有哪些方面_应用程序_05

 四、运行打包好的Jar

在本地运行服务,最简单的,可以直接在jar目录下使用命令 java -jar xxx.jar即可:

在开发spring boot项目中实践难点有哪些方面_java_06

这种启动方式有个问题,就是当我们关闭终端的时候,服务随之关闭,那么在服务器上如何如何后台运行应用程序呢?

使用nohup命令,千万不要忘了最后面的&符号

在开发spring boot项目中实践难点有哪些方面_jar_07

此时,如果想结束应用程序,使用命令kill,从而达到了结束进程的效果 ;

这样启动是不是也有个问题,看不到启动日志,那该如何查看日志呢?

其实,在启动的时候,控制台显示appending output to nohup.out的时候,就应猜到,日志已输出到了名为nohup.out的文件内,可以通过tail -f nohup.out命令查看运行日志内容,如下所示:

在开发spring boot项目中实践难点有哪些方面_应用程序_08

考虑到实际工作中一台服务器上可能部署运行多个应用程序,为了区分每个应用程序的日志,需要指定日志的输出文件:

在开发spring boot项目中实践难点有哪些方面_spring boot_09

然后使用命令tail -f 查看日志文件:

在开发spring boot项目中实践难点有哪些方面_应用程序_10

根据实际的工作经验,考虑到相同ServiceID的服务可能存在部署不同版本的情况,

所以建议日志文件的名称格式:Service ID + Service Version;

五、JVM Server模式

JVM内有一个模式的概念,开发环境推荐使用client模式,因为它启动快,可以提高一部分开发效率;生产环境则是推荐使用server模式,因为编译比较彻底,服务在运行期间相对于client性能高一些;

设置使用server模式也比较简单,我们只需要执行java -server命令即可:

JVMclient模式下运行,默认Xms大小为1M,默认Xmx大小为64M;server模式下默认Xms大小为128M,默认Xmx大小为1024M,可以根据实际情况进行修改分配:

在开发spring boot项目中实践难点有哪些方面_java_11

实际工作中,为了使用的方便,我们通常会对上述命令进行封装,然后放在jar同级目录下,如下所示:

#bin/bash
nohup java -server -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms256m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar "$1" > "$1.log" 2>&1 &
tail -1000f "$1.log"

运行应用程序的时候只需要执行run.sh脚本,同时传入具体的jar作为第一个入参即可:

在开发spring boot项目中实践难点有哪些方面_jar_12