1. 程式人生 > >《SpringBoot框架開發技術整合》筆記(一)

《SpringBoot框架開發技術整合》筆記(一)

文章目錄

前言

    筆者近期在慕課網上學習了《Springboot框架開發技術整合》一系列課程,收益頗豐,於是結合筆記寫下此文以作總結歸納。如有不當之處,敬請評論指出,筆者虛心接受。

第一章 構建簡單WEB專案

    有兩種方法可以快速構建SpringBoot專案。
    一. 通過SpringBoot官網的QuickStart構建一個專案。

快速構建SpringBoot專案
    二. 使用Spring官方的Spring Tool Suite搭建SpringBoot專案。因為大多數開發者用的是idea和eclipse,這裡就不作闡述,有興趣的可以自行了解。

第二章 SpringBoot介面返回Json

    一. SpringBoot構造並返回一個json物件

@RestController
public class UserController {

    @RequestMapping("user")
    public User getUser() {
        User user = new User();
        user.setAddress("深圳");
        user.setAge(18);
        user.setUserName("老王");
        return user;
    }
}

在這裡插入圖片描述
    二. Jackson的基本演繹法
    類註解:

  • @JsonIgnoreProperties({“id”, “created”, “steps”, “copy”, “stepList”})
    指定序列化時忽略這些屬性,可用於覆蓋父類的屬性

    屬性註解:

  • @JsonInclude(Include.NON_EMPTY)
    當該屬性為空時,不序列化
  • @JsonIgnore
    忽略該屬性
  • @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)
    格式化時間戳,其中GMT+8指東八區

第三章 SpringBoot熱部署

    只需要要引入一個starter就可以實現熱部署。

<!-- 熱部署 -->
        <!-- devtools可以實現頁面熱部署(即頁面修改後會立即生效,
            這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false來實現) -->
        <!-- 實現類檔案熱部署(類檔案修改後不會立即生效),實現對屬性檔案的熱部署。 -->
        <!-- 即devtools會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機),
            注意:因為其採用的虛擬機器機制,該項重啟是很快的 -->
        <!-- (1)base classloader (Base類載入器):載入不改變的Class,例如:第三方提供的jar包。 -->
        <!-- (2)restart classloader(Restart類載入器):載入正在開發的Class。 -->
        <!-- 為什麼重啟很快,因為重啟的時候只是載入了在開發的Class,沒有重新載入第三方的jar包。 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <!-- optional=true, 依賴不會傳遞, 該專案依賴devtools;
                之後依賴boot專案的專案如果想要使用devtools, 需要重新引入 -->
            <optional>true</optional>
        </dependency>

    需要注意的是,IDEA中改完程式碼需要Build Project(CTRL+F9)後才會進行熱部署。
    筆者認為,相對於IDEA的DEBUG模式,這種熱部署方式顯得有些笨拙。大多數場景是修改業務程式碼,使用DEBUG模式重構完專案就可以立即生效,而devtools會重啟整個專案,用時更多。如果在專案構建初期,需要頻繁地修改配置、註解、依賴的時候(DEBUG模式對這些的修改不能即時生效),可以使用devtools進行熱部署,縮短專案重啟時間。

第四章 SpringBoot資原始檔屬性

    一. 資原始檔中的屬性配置與對映到實體類
    1. 引入依賴

        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>-->

     SpringBoot預設使用yml中的配置,但有時候要用傳統的xml或properties配置,就需要使用spring-boot-configuration-processor。如果已經依賴了spring-boot-starter,可以不用再次引用spring-boot-configuration-processor,因為前者已經包含了後者。
    2. 建立配置檔案並配置屬性
    resource.properties:

com.mintc.opensourece.name = Mintc
com.mintc.opensourece.address = 深圳

    3. 建立需要對映的實體類

package com.mintc.springBootDemo.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@ConfigurationProperties(prefix = "com.mintc.opensourece")
@PropertySource(value = "classpath:resource.properties")
public class Resource {
    /**
     * 名稱
     */
    private String name;

    /**
     * 地址
     */
    private String address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

     @Configuration用於定義配置類,可替換xml配置檔案,被註解的類內部包含有一個或多個被@Bean註解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,並用於構建bean定義,初始化Spring容器。
     @ConfigurationProperties(prefix = “com.mintc.opensourece”)用於注入配置檔案,其中prefix作用是定義配置檔案中屬性的字首,結合第二步能夠更好地理解。
     @PropertySource(value = “classpath:resource.properties”)用於指定配置檔案的位置,其中classpath指的是resource目錄。
    4. 測試Controller

package com.mintc.springBootDemo.Controller;

import com.mintc.springBootDemo.entity.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private Resource resource;

    @RequestMapping("getResource")
    public Resource getResource() {
        Resource a = new Resource();
        BeanUtils.copyProperties(resource, a);
        return a;
    }
}

    5. 執行效果
在這裡插入圖片描述
    二. SpringBoot資原始檔配置Server

############################################################
#
# Server 服務端相關配置
#
############################################################
# 配置api埠號
#server.port=8088
# 配置context-path, 一般來說這個配置在正式釋出的時候不配置
#server.servlet.context-path=/IMooc
# 錯誤頁,指定發生錯誤時,跳轉的URL --> BasicErrorController
#server.error.path=/error
# session最大超時時間(分鐘),預設為30分鐘
server.session-timeout=60
# 該服務繫結IP地址,啟動伺服器時如本機不是該IP地址則丟擲異常啟動失敗, 
# 只有特殊需求的情況下才配置, 具體根據各自的業務來設定
#server.address=192.168.1.2

############################################################
# Server - tomcat 相關常用配置
############################################################
# tomcat最大執行緒數, 預設為200
#server.tomcat.max-threads=250
# tomcat的URI編碼
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日誌、Dump等檔案的臨時資料夾,預設為系統的tmp資料夾
#(如:C:\Users\Shanhy\AppData\Local\Temp)
#server.tomcat.basedir=H:/springboot-tomcat-tmp
# 開啟Tomcat的Access日誌,並可以設定日誌格式的方法:
#server.tomcat.access-log-enabled=true
#server.tomcat.access-log-pattern=
# accesslog目錄,預設在basedir/logs
#server.tomcat.accesslog.directory=
# 日誌檔案目錄
#logging.path=H:/springboot-tomcat-tmp
# 日誌檔名稱,預設為spring.log
#logging.file=myapp.log