《SpringBoot框架開發技術整合》筆記(一)
文章目錄
前言
筆者近期在慕課網上學習了《Springboot框架開發技術整合》一系列課程,收益頗豐,於是結合筆記寫下此文以作總結歸納。如有不當之處,敬請評論指出,筆者虛心接受。
第一章 構建簡單WEB專案
有兩種方法可以快速構建SpringBoot專案。
一. 通過SpringBoot官網的QuickStart構建一個專案。
二. 使用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