一、代碼實現
1. 創建maven工程,普通的java工程
2. 添加SpringBoot的起步依賴
SpringBoot要求,項目要繼承SpringBoot的起步依賴
spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>SpringBoot要集成SpringMVC進行Controller的開發,所以項目要導入web的啟動依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>3. 編寫SpringBoot引導類
引導類必須放在與controller等包同級目錄
package com.xiaojian;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}4. 編寫Controller類
package com.xiaojian.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class QuickController {
@RequestMapping("/quick")
@ResponseBody
public String quick(){
return "hello SpringBoot";
}
}@ResponseBody 必須加上。
5. 測試
瀏覽器訪問 : localhost:8080/quick 顯示: hello SpringBoot
二、入門解析
1.SpringBoot代碼解析
- 所有SpringBoog工程中,都要在pom.xml添加父工程依賴(spring-boot-starter-parent),後面進行源碼分析
- 以功能為單位,如需要web功能在瀏覽器進行訪問,秩序添加依賴(spring-boot-starter-web)
- @SpringBootApplication,聲明該類是SpringBoot的引導類 run方法運行SpringBoot引導類,參數是引導類的位元組碼對象
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}2.SpringBoot工程熱部署(好東西啊)
我們在開發中反覆修改類、頁面等資源,每次修改後都是需要重新啟動才生效,這樣每次啟動都很麻煩,浪費了大量的時間,我們可以在修改代碼後不重啟就能生效,在pom.xml中添加如下配置就可以實現這樣的功能,我們稱之為熱部署
<!--熱部署配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>ps:IDEA進行SpringBoot進行熱部署失敗的解決方案
- Setting -> Compiler -> Build project automatically
- 然後 Shift+Ctrl+Alt+/,選擇Registry,在列表中找到 compiler.automatically.allow.when.app.running 打鉤 完成
三、原理分析
1. 起步依賴原理分析(查看源碼)
- 分析spring-boot-starter-parent spring-boot-starter-parent中也有父依賴spring-boot-starter-dependencies,從中可以看到一部分坐標的版本、依賴管理、插件管理已經定義好,所以我們的SpringBoot工程繼承spring-boot-starter-parent後已經具備版本鎖定等配置了。 所以起步依賴的作用就是進行依賴的傳遞。
- 分析spring-boot-starter-web spring-boot-starter-web就是將web開發要使用的spring-web、spring-webmvc等坐標進行了「打包」,這樣我們的工程只要引入spring-boot-starter-web起步依賴的坐標就可以進行web開發了,同樣體現了依賴傳遞的作用。在以後需要添加的功能也是同理
2. 自動配置
@SpringBootApplication 註解 相當於配置三個註解
@SpringBootConfiguration // 相當於 @Configuration ,配置Spring容器(@Bean,註冊bean對象,標註在返回某個實例的方法)
@EnableAutoConfiguration // 自動配置
@ComponentScan( // 組件掃描,掃描與引導類同級目錄包下的bean
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)介面EnableAutoConfiguration(重要)

@AutoConfigurationPackage

將主配置類(@SpringBootApplication標註的類)同級目錄下的所在包,及下面所有子包裡面的所有組件掃描到Spring容器

@Import註解:
通過導入的方式實現把實例加入springIOC容器中

AutoConfigurationImportSelector:
導入哪些組件的選擇器
將所有需要導入的組件以全類名的方式返回;這些組件被添加到容器中。
會給容器中導入非常多的自動配置類(xxxAutoConfiguration);
就是給容器中導入這個場景需要的所有組件,並配置好這些組件。
在該類中獲取全類名的方法中,調用
getCandidateConfigurations( … )

loadFactoryNames( … ) ,使用類載入器載入目標位置的資源(也就是需要導入的組件全類名),並存入Properties中返回

自動導入組件全過程圖解:
SpringBoot 在啟動的時候,從springboot的autoconfigure包的類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值(組件全類名),將這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作。
以前我們需要自己配置的東西,自動配置類幫我們做了(對比SSM中的各大配置屬性)

四、SpringBoot項目目錄結構
resources文件夾
- static:保存所有靜態資源,js,css,images;
- templates:保存所有的模板頁面;(Spring Boot默認jar包使用嵌入式的Tomcat,默認不支持jsp頁面),可以使用模板引擎(freemarker,thymeleaf)
- application.properties:Spring Boot應用的配置文件;springboot自動配置原理
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274774.html
微信掃一掃
支付寶掃一掃