1.SpringBoot内置Tomcat
Tomcat是一个免费开源的Web应用服务器,属于轻量级应用服务器。查看spring-boot-starter-web依赖可知,SpringBoot默认使用Tomcat作为内嵌的Servlet容器。
如果想要使用其它Servlet容器作为SpringBoot默认内置容器,只需要修改spring-boot-starter-web依赖即可。如使用Jetty作为SpringBoot默认内置容器,在pom.xml中做如下修改。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
2.Intellij IDEA配置Tomcat
步骤1:在Intellij IDEA开发菜单栏中,选择【Run】->【Edit Configurations】,在弹出的窗口中选择【Default】->【Tomcat Server】->【Local】,在【Application Server】中选择Tomcat的安装路径,然后在【JRE】中选择JDK的安装路径,具体如下图所示。
步骤2:在【Deployment】选项中,点击+然后选择【Artifact】->【app:war exploded】,如下图所示。
3.war包部署(以mybtis小节为例)
步骤1:在pom.xml配置文件中,将packaging标签属性的值修改为war,如下所示。
<packaging>war</packaging>
步骤2:在终端Terminal下,依次执行“mvn clean”和“mvn package”命令,命令成功执行后,会在target目录下生成一个以项目名字命名的war包,如下图所示。
步骤3:将war包复制到tomcat的webapps目录下,并将war包名称修改为mybatis.war。
步骤4:修改Tomcat的server.xml配置文件,在Host配置段中添加如下内容。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="mybatis.war" debug="0" previledge="true" reloadable="true"/>
</Host>
步骤5:运行tomcat/bin目录下的启动脚本文件startup.sh启动tomcat,如果看到如下界面则表示启动成功。
步骤6:在postman中请求“http://localhost:8080/user/findByName”,可以查询到相应的信息,测试结果如下图所示。
4.热部署
在SpringBoot中可以通过配置来实现热部署,当代码有修改时,可以自动部署并重新热启动项目。
步骤1:在pom.xml中添加如下依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
步骤2:在Intellij IDEA开发菜单栏中,依次选择【File】->【Other Settings】->【Default Settings】->【Compiler】->【Build Project Automatically】选项,具体如下图所示。
步骤3:组合键【Command+Shift+Alt+/】(windows平台组合键【Ctrl+Shift+Alt+/】)选择【Registry】,在弹出的界面中勾选【compiler.automake.allow.when.app.running】,如下图所示。
需要注意的是,生产环境下devtools将被禁用,如java -jar方式或者自定义的类加载器等都会被识别为生产环境。应用打包默认也不会包含devtools,除非禁用SpringBoot Maven插件的excludeDevtools属性。