Springboot快速入門篇,圖文並茂
文章已託管到GitHub,大家可以去GitHub檢視閱讀,歡迎老闆們前來Star!
搜尋關注微信公眾號 【碼出Offer】 領取各種學習資料!
一、Springboot概述
1.1 Springboot簡介
SpringBoot是由Pivotal團隊研發的,SpringBoot並不是一門新技術,只是將之前常用的Spring,SpringMVC,data-jpa等常用的框架封裝到了一起,幫助你隱藏這些框架的整合細節,實現敏捷開發。簡單來說,SpringBoot就是一個啟動器。
1.2 Springboot的特點
- SpringBoot專案不需要模板化的配置。
- SpringBoot中整合第三方框架時,只需要匯入相應的starter依賴包,就自動整合了。
- SpringBoot預設只有一個.properties的配置檔案,不推薦使用xml,後期會採用.java的檔案去編寫配置資訊。
- SpringBoot工程在部署時,採用的是jar包的方式,內部自動依賴Tomcat容器,並且提供了多環境的配置。
- 後期要學習的微服務框架SpringCloud需要建立在SpringBoot的基礎上。
二、快速構建Springboot
2.1 Spring官方快速構建
New Project |
---|
Spring Initializer Project Setting |
選擇版本和所需依賴 |
填寫專案名稱和本地儲存路徑 |
2.2 aliyun快速構建(解決載入失敗)
如果Spring官方的快速構建載入出現問題,可以使用aliyun提供的Spingboot快速構建。
aliyun快速構建Springboot |
---|
其他步驟與Spring官方構建一致 |
2.3 Spring與aliyun差別
使用Spring官方和aliyun快速構建的Springboot專案是有一些差距的,其實專案結構上沒有本質的差距,只是在pom.xml檔案中會出現一系列差距!
- aliyun使用並維護著Spring全家桶的2.3版本,其中加入了一些編碼字符集處理與之aliyun所維護的依賴等
- Spring官方使用並維護著Spring全家桶的2.3.2版本,其中維護使用著Spring官方依賴等
注意: 兩者沒有本質差別,我們只需要使用即可!
2.4 匯入核心依賴
此核心依賴有著Spring的大多數web依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.5 編寫Controller直接測試
直接訪問路徑即可出現頁面並響應在瀏覽器上!
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "Hello SpringBoot!";
}
}
三、Springboot目錄結構說明
Springboot目錄結構 |
---|
四、Springboot的三種啟動方式
4.1 執行啟動類的main方法
執行啟動類的main方法 |
---|
4.2 使用Maven啟動
使用Maven啟動(mvn spring-boot:run) |
---|
4.3 使用Springboot打包的jar檔案啟動
首先,Springboot打包方式是jar的方法。預設使用maven 的package打包,而隨之也會觸發springboot內建的
springboot:repackage
,而springboot的內建再次打包會在此jar檔案的基礎上內建一個tomact,也即是說使用Springboot打包的jar檔案是可以執行的!
打包展示 |
---|
DOS命令列執行 |
java -jar jar檔案路徑/jar包名字 |
五、Springboot入門註解
5.1 @Configuration和@Bean
- 之前使用SSM去開發時,在xml檔案中編寫bean標籤,但是SpringBoot不推薦使用xml檔案。
- @Configuration註解相當於beans標籤
- @Bean註解相當於bean標籤
- id=“方法名 | 註解中的name屬性(優先順序更高)”
- class=“方法的返回結果”
如下,舉例子。
@Configuration // 代表當前類是一個配置類
public class UserConfig {
@Bean(name = "user1") // 構建一個例項,放到spring容器中
public User user(){
User user = new User();
user.setId(1);
user.setName("張三");
return user;
}
/* 與其相同作用
<beans ....> @Configuration
<bean id="user1" class="com.ziphtracks.firstspringboot.bean.User" />
</beans>
*/
}
5.2 @SpringBootApplication
@SpringBootApplication就是一個組合註解:
- @SpringBootConfiguration就是@Configuration註解,代表啟動類就是一個配置類。
- @EnableAutoConfiguration幫你實現自動裝配的,SpringBoot工程啟動時,執行一個SpringFactoriesLoader的類,載入META-INF/spring.factories配置類(已經開啟的),通過SpringFactoriesLoader中的load方法,以for迴圈的方式,一個一個載入。
- 好處:無需編寫大量的整合配置資訊,只需要按照SpringBoot提供好了約定去整合即可。
- 壞處:如果說你匯入了一個starter依賴,那麼你就需要填寫他必要的配置資訊。
- 手動關閉自動裝配指定內容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)
- @ComponentScan就相當於
,幫助掃描註解的。 注意: 你完全可以通過上述所說去翻看以下該註解的原始碼
原始碼 |
---|
5.3 @SpringBootTest
該註解用於測試啟動項中,用於啟動測試的註解
測試啟動項註解配置 |
---|
六、Springboot配置檔案
6.1 配置檔案規範
SpringBoot的配置檔案支援properties和yml,甚至他還支援json。
更推薦使用yml檔案格式:
yml檔案,會根據換行和縮排幫助我們們管理配置檔案所在位置
yml檔案,相比properties更輕量級一些
yml檔案的注意事項:
嚴格遵循換行和縮排
在填寫value時,一定要在: 後面跟上空格
6.2 多環境配置
在application.yml檔案中新增一個配置項:
可以使用逗號( , )來啟用多個環境
如下我建立了兩個開發配置,一個用來開發的配置(dev)、另一個用來測試的配置(test),隨後使用總的配置來啟用這兩個配置環境。
多環境配置 |
---|
6.3 引入外部配置檔案資訊
和傳統的SSM方式一樣,通過@Value的註解去獲取properties/yml檔案中的內容。
如果在yml檔案中需要編寫大量的自定義配置,並且具有統一的字首時,採用如下方式
// Java程式
@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties {
private String name;
private Integer age;
}
// 配置檔案
aliyun:
name: Ziph
age: 18
6.3 重新構建工程
build |
---|
6.4 Springboot熱部署
在做SSM專案時,我們會用到IDEA外掛JRebel熱部署神器來方便開發。因為熱部署很受大家愛戴,所以Springboot也提供了熱部署功能。如下:
匯入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
IDEASetting相關配置 |
---|
Springboot啟動項設定 |
七、Springboot建立web目錄
static資料夾是儲存靜態資源的,而我們的動態資源還是需要web目錄結構儲存的,於是我們建立一個web目錄結構!
匯入JSP以及JSTL核心依賴
<!--JSP核心引擎依賴-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--JSTL-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
建立webapp以及WEB-INF等web目錄結構 |
---|
新增web.xml |
展示web目錄結構 |