學習筆記:JavaEE開發的顛覆者SpringBoot實戰(十)開發部署與測試

一 開發的熱部署

1 模板熱部署

在spring boot裏,模板引擎的頁面默認是開啓緩存的,如果修改了頁面的內容,則刷新頁面是得不到修改後的內容,故需在配置中關閉模板引擎的緩存。

Thymeleaf

spring.thymeleaf.cache=false

FreeMarker

spring.freemarker.cache=false

Groovy

spring.groovy.cache=false

Velocity

spring.velocity.cache=false

2.Spring Loaded

3.JRebel

4. spring-boot-devtools

4.1 pom.xml配置文件


<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
</dependency>
<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
      <fork>true</fork> <!-- 如果沒有該配置,devtools不會生效 -->
   </configuration>
</plugin>

4.2 yml配置

spring:
 devtools:
  livereload:
    enabled: true #是否支持livereload
    port: 35729
  restart:
    enabled: true #是否支持熱部署

4.3 IDEA配置

File-Settings-Compiler-Build project automatically

 

4.4.安裝livereload插件

下載livereload插件,將其安裝到chrome擴展程序中,並選中允許訪問文件網址。


4.5.測試

(1)修改類 應用會重啓
(2)修改配置文件 應用會重啓
(3)修改靜態文件(html、css等),應用不會重啓,但是會調用livereload,瀏覽器會自動刷新,顯示最新的修改內容。

二 常規部署

1. jar形式

1.1 打包

mvn pakage

1.2 運行

java -jar xx.jar

1.3 註冊爲Linux的服務

2. war形式

2.1 修改pom.xml文件

<!--修改打包方式爲war-->
<packaging>war</packaging>


<!--移除內嵌的tomcat-->
<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>

2.2 添加ServletInitializer類,或者直接在啓動類上修改

@SpringBootApplication
public class ServletInitializerApp extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
    
        return builder.sources(ServletInitializerApp.class)
    
    }

    public static void main(String[] args){
        SpringApplication.run(ServletInitializerApp.class,args);
    }

}

3.雲部署--基於Docker的部署

主流的雲計算(PAAS)平臺都支持發佈Docker鏡像。Docker是使用Dockerfile文件來編譯自己的鏡像的。

3.1 DockerFile

主要指令:

FROM指令:指明瞭當前鏡像繼承的基鏡像。編譯當前鏡像時會自動下載基鏡像。

FROM ubuntu
FROM java:8

MAINTAINER指令:指明瞭當前鏡像的作者。

MAINTAINER shenhaiming

RUN指令:可以在當前鏡像上執行Linux命令並形成一個新的層。RUN是編譯時(build)的動作/

RUN /bin/bash -c "echo helloworld"
或
RUN {"/bin/bash","-c"."echo hello"}

CMD指令:指明瞭啓動鏡像容器時的默認行爲。一個Dockerfile裏只能有一個CMD指令。CMD指令裏設定的命令可以在運行鏡像時使用參數覆蓋。CMD是運行時(run)的動作。

CMD echo "this is a test"

可被以下命令覆蓋

docker run -d image_name echo "this ia a test"

EXPOSE指令:指明瞭鏡像運行時的容器必須監聽指定的端口。

EXPOSE 8080

ADD指令:是從當前工作目錄複製文件到鏡像目錄中去。

ADD test.txt /mydir/

ENTRYPOINT指令:可讓容器像一個可執行程序一樣運行,這樣鏡像運行時可以像軟件一樣接收參數執行。ENTRYPOINT是運行時(run)的動作。

ENTRYPOINT ["/bin/echo"]

3.2 安裝Docker

安裝

yum install docker

啓動

systemctl start docker
systemctl enable docker

3.3 部署

3.3.1 Dockerfile文件

將jar(ch10docker-0.0.1-SNAPSHOT.jar)放到目錄/var/apps/ch10docker下,在同級目錄下新建一個Dockerfile文件。

FROM java:8  #基鏡像爲java,標籤(版本)爲8

MAINTAINER shm  #作者爲shm

ADD ch10docker-0.0.1-SNAPSHOT.jar app.jar  #將jar包添加到鏡像,並重命名爲app.jar

EXPOSE 8080 #運行鏡像的容器,監聽8080端口

ENTRYPOINT ["java","-jar","/app.jar"] #啓動時運行 java -jar app.jar

3.3.2 編譯鏡像

在/var/apps/ch10docker目錄下,執行命令

docker build -t wisely/ch10docker .

wisely/ch10docker 爲鏡像名稱,我們設置wisely作爲前綴,這也是Docker鏡像的一種命名習慣。

"." 這是用來指明dockerfile路徑的,其表示當前路徑

使用docker images命令查看本地鏡像

3.3.3 運行

docker run -d --name ch10 -p 8080:8080 wisely/ch10docker

運行後可用使用命令docker ps 查看當前容器狀態

4. springboot的測試

依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

測試類:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoTest{

    @Test
    public void methods(){
        //do something
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章