[笔记]SpringBoot实战(6)-Spring Boot 开发部署与测试

系列笔记:

1.开发的热部署

1.1 模板热部署

在Spring Boot里,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的因此,我们可以在 application.properties 中关闭模板引擎的缓存: 例如:

#Thymeleaf的配置:
spring.thymeleaf.cache=false  
#FreeMarker的配置:
spring.freemarker.cache=false  
#Groovy的配置:
spring.groovy.template.cache=false  
#Velocity 的配置:
spring.velocity.cache=false  

1.2 Spring Loaded

Spring Loaded 可以实现修改类文件的热部署(可在spring官网下载)。

在 IDE 运行配置的VM arguments中添加如下内容:

-javaagent:D:\spring-loaded.xxx.jar -noverify

1.3 JRebel

JRebel 是Java开发热部署的最佳工具,其对SpringBoot也提供了极佳的支持。JRebel为收费软件,可试用14天。之前有网站可以提供免费试用账号,目前已取消。

1.4 spring-boot-devtools

在Spring Boot项目中添加spring-boot-devtools依赖即可实现页面和代码的热部署。

implementation ('org.springframework.boot:spring-boot-devtools:x.x.x')  

2.常规部署

2.1 jar 形式

maven和gradle都对Spring Boot有很好的支持,可以直接打出可执行jar包。
1.可使用 jar 方式直接运行:

java -jar xx.jar  

2.还可以注册为Linux的服务:
主流的Linux大多使用init.d或systemd来注册服务。

  • 基于Linux的init.d部署
# 注册服务,在CentOS 6
sudo ln -s /xxx/APP-SNAPSHOT.jar /etc/init.d/APP  
# APP 就是服务名
# 启动服务/停止服务/重启服务/服务状态
service APP start/stop/restart/status  
# 开机启动
chkconfig APP on  
# 项目日志存放于 /var/log/APP.log 下。
  • 基于Linux的systemd部署 在 /etc/systemd/system/目录下文件 APP.server,填入以下内容:
[Unit]
Description=APP  
After=syslog.target

[Service]
ExecStart=/xxx/java -jar /xxx/APP-SNAPSHOT.jar

[Install]
WantedBy=multi-user.target  

注意:在实际使用中修改 和 后面的内容。

# 启动服务/停止服务/重启服务/服务状态
systemctl start/stop/restart/status APP/APP.service  
# 开机启动
systemctl enable APP/APP.service  
# 项目日志
journalctl -u APP/APP.service  

2.2 war 形式

打包成war文件形式,可以放在常见的几种Servlet容器上运行。

3.云部署-基于Docker的部署

3.1 Dockerfile 编写

在CentOS 7上的 /var/apps/APP 目录下放入我们编译好的 APP 的jar包,如 APP-0.0.1-SNAOSHOT.jar,在同级目录下新建一个 Dockerfile 文件。内容如下:

# 基镜像为Java,标签(版本)为8。
FROM java:8  
# 作者
MAINTAINER Sherlock  
# 将jar包添加到镜像中,并重命名为app.jar
ADD APP-0.0.1-SNAOSHOT.jar app.jar  
# 运行镜像的容器,监听 8080 端口
EXPOSE 8080  
# 启动时运行 java -jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]  

3.2 编译镜像

在 /var/apps/APP 目录下执行以下命令,执行镜像编译:

docker build -t Sherlock/APP .  

其中 Sherlock/APP 为镜像名称,此处设置Sherlock作为前缀,这也是Docker进行的一种命名习惯。
注意:最后还有一个“.”,用来指明Dockerfile路径的。

编译完成后,可以使用docker images查看本地进行。

3.3 运行

通过以下命令运行:

docker run -d --name APP -p 8080:8080 Sherlock/APP  

可使用docker ps查看当前的容器状态。