对于我们Java开发工程师来说,最熟悉的莫过于SSH,SSM框架了,这些都是曾经开发Web项目的重要技术,但是我们在开发这些项目时,却难免遇到一个很令人繁琐的事情,那就是配置文件太多了,基本每个框架都需要配置自己的XML文件,以供项目启动时,读取这些配置文件,注入所需的实例和初始属性;此外,我们写的这些项目最后还要部署到Tomcat,Jetty这些服务器容器中,才能成功运行。
因此,为了简化这一系列的繁琐情况,SpringBoot技术应用而生,其核心思想便是精简配置,全部使用注解进行高效开发,目前SpringBoot最新的时2.X版本了,每个版本都会有所差别的,网上讲解这方面的知识很多,但是讲解部署却很少,同时大部分讲解的部署也都是打War包再部署到Tomcat中运行,可这又违反了SpringBoot的初衷,因此我们可以直接打一个Jar包直接使用Java最初的命令java -jar XXX.jar的命令运行,是不是很神奇?
首先,我们在进行项目开发时,需要确保自己已经配置好了JDK(推荐JDK8+)以及Maven,或Ant或Gradle。
这里,我们使用maven快速搭建一个项目,SpringBoot只需要一个pom.xml和一个application.properties(或application.yml)文件,pom.xml里面放的时所有依赖的Jar包,而application.properties里面可以存在所有的配置信息,以便进行部分属性的初始化。
如果想使用SpringBoot进行开发,首先需要引入其Jar包的配置,以让其成为parent,以便让其顺带提供所有需要的基本依赖包。目前有两种引入方式
org.springframework.boot
spring-boot-starter-parent
2.0.6.RELEASE
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.boot
spring-boot-starter-mail
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-aop
上面时最简单的一种方式,也是最常用的一种方式,但是这种写法有一个很大的弊端,便是仅限于SpringBoot相关的依赖了,如果想要引入SpringCloud依赖,便要采取其他方式了:
org.springframework.boot
spring-boot-dependencies
2.0.6.RELEASE
pom
import
org.springframework.boot
spring-boot-test
2.0.6.RELEASE
通过上面两者配置方式,我们可以很轻松的看出来,第一种配置方式,引入了
回到我们最初的问题,它为什么不需要外部Tomcat容器便可以直接运行了呢?其原因在于,SpringBoot使用的嵌入式的Web容器,在我们引入:
org.springframework.boot
spring-boot-starter-web
它其实默认引入了Tomcat的容器,如果想要更换为Jetty容器,则需要:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-tomcat
org.springframework.boot
spring-boot-starter-jetty
这样,我们在点击项目main方法时,便会运行在嵌入式的Tomcat中了。
我们写项目的终究目的时发布到服务器上,因此我们需要进行打包,这里只说明Jar包的打包方式,
com.air
myproject
1.6
jar
首先,需要更改的就是自己项目的描述信息中的
org.springframework.boot
spring-boot-maven-plugin
com.air.StartApplication
MyProject
然后,使用Eclipse的功能,右击项目,选择run as,然后选择Maven build...,在打开的对话框中输入clean package -X,
如上图,我们再勾选Debug Output, Skip Tests,稍等一段时间,便可以在该项目中的target目录下得到项目的jar包了。
然后将该Jar包直接放到我们的服务器上,运行java -jar xxx.jar即可,但是这样的话,一旦关闭窗口,服务运行就中断了,因此,我们可以使用如下命令,让其在后台一直运行:
nohup java -jar ./home/project/xxx.jar > ./home/project/system.log 2>& 1 &
首先,我们在项目的目录下,使用cmd命令行:
mvn dependency:tree>tree.txt
在该文件中,查看详细缺少的Jar包,如果缺失的Jar包较多,那么此时可能丢失的是一个大的Jar包(并且该Jar可能是一个pom),由于它的丢失导致其所有依赖都丢失。
此时,我们需要详细去Eclipse中查看丢失的时哪个Jar包或者方法,如果时Jar包,首先检查自己的本地仓库是否有该Jar包,若有,可能时已经出现问题了,直接删除后让Maven帮我们重新下载;如果没有,则可能时网络原因,我们可以去Maven Repository下载该Jar包,让后将其放到对应的本地库中,地址为:https://mvnrepository.com;
如果丢失的时一个方法,此时我们不好查到它时哪个Jar包的,这里有个网址:https://search.maven.org/,点击“Classic Search”链接,然后选择“Advanced Search”输入我们的方法名即可,获得其归属。