? ? ? ? 默認有spring基礎,不會一行代碼一行代碼那么細致地講。
SpringBoot的作用
????????Spring Boot是為了簡化Spring應用的創建、運行、調試、部署等而出現的。就像我們整個SSM框架時,就常常會碰到版本導致包名對不上、Bean非法參數類型的一系列問題(原出處鏈接)。因為一種架構中有很多很多的jar包,而jar包之間的整合(需要導入那些包,有哪些包之間的整合需要額外的jar包[像mybatis-spring]、每種包的版本選擇)。
? ? ? ? SpringBoot提供了一堆依賴打包Starter,并已經按照使用習慣解決了依賴問題---習慣大于約定。Spring Boot默認使用tomcat作為服務器,使用logback提供日志記錄。致力于簡潔,讓開發者寫更少的配置,程序能夠更快的運行和啟動。
主要特點:
1.為基于Spring的開發提供更快的入門體驗
2.開箱即用,沒有代碼生成,也無需XML配置。同時也可以修改默認值來滿足特定的需求
3.提供了一些大型項目中常見的非功能性特性,如嵌入式服務器、安全、指標,健康檢測、外部配置等
4.SpringBoot不是對Spring功能上的增強,而是提供了一種快速使用Spring的方式
創建項目及注意事項
? ? ? ? 1.來到項目創建
????????
? ? ? ? ?2.選擇
我們左側選擇Springboot
? ? ? ? 3.在這個頁面選擇你想要添加的框架,同時SpringBoot版本不建議選太高
? ? ? ? ?之后不同的框架各有個的整合需求,這里只講SpringBoot本身的使用:
SpringBoot簡介
父項目parent
????????SpringBoot將所有的技術版本的常見使用方案都給開發者整理了出來,以后開發者使用時直接用它提供的版本方案,就不用擔心沖突問題了,相當于SpringBoot做了無數個技術版本搭配的列表,這個技術搭配列表的名字叫做parent。簡單講,版本管理這一塊springboot-parent會幫我們做好,而使用哪些框架還是我們自己定。
? ? ? ? 父項目指定使用<parent>標簽指定,如果你前面示例的方式,使用構建工具創建springboot項目,工具通常會給你加上。
? ? ? ? 我們ctrl+鼠標左鍵點進spring-boot-starter-parent:
? ? ? ? ?可以看到它還繼承了個spring-boot-dependencies。我們再同樣地點進spring-boot-dependencies,可以看到這里定義了很多版本號。當我們選擇了引入的框架之后,就會在這里獲取對應的版本號。
starter
????????SpringBoot關注到實際開發時,開發者對于依賴坐標的使用往往都有一些固定的組合方式,比如使用spring-webmvc就一定要使用spring-web。每次都要固定搭配著寫,非常繁瑣,而且格式固定。因此,springboot把所有的技術使用的固定搭配格式都給開發出來。用某個技術就不用每次寫一堆依賴了,開發者使用的時候直接寫上對應的搭配即可。對于這樣的固定技術搭配,SpringBoot給它起了個名字叫做starter。
starter:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
原本要寫的依賴:
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>6.1.18</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.18</version><scope>compile</scope></dependency>
引導類
? ? ? ? 講完配置和創建,下面講運行。目前springboot程序運行的入口就是SpringBoot工程創建時自帶的那個類,也就是帶有main方法的那個類,運行這個類就可以啟動SpringBoot工程。
????????SpringApplication會執行以下步驟:
1.推斷應用的類型是普通的項目還是Web項目
2.查找并加載所有可用初始化器,設置到initializers屬性中
3.找出所有的應用程序監聽器,設置到listener屬性中
4.推斷并設置main方法的定義類,找到運行的主類
注解
? ? ? ? 在我們的啟動類上面有這個注解@SpringBootApplication,這個注解繼承了@EnableAutoConfiguration注解和@ComponentScan:
? ? ? ? @SpringBootApplication是springboot2開始才有的注解,在springboot1使用的是原始的@EnableAutoConfiguration注解和@ComponentScan注解。
? ? ? ? 無論使用@EnableAutoConfiguration注解和@ComponentScan還是使用@SpringBootApplication,其目的都是為了快速配置啟動類。
? ? ? ? 也就是@SpringBootApplication是一個復合注解。現在我們來看原始的注解,每個注解都做了些什么。
@SpringBootConfiguration
? ? ? ? 我們看源碼:
????????
? ? ? ? ?可以看到@Configuration。在Spring項目中,我們的配置類就是使用該注解,用于生成IOC容器。
@EnableAutoConfiguration
????????@EnableAutoConfiguration 注解啟用自動配置,其可以幫助 SpringBoot 應用將所有符合條件的 @Configuration 配置都加載到當前 IoC 容器之中。
? ? ? ? 簡單描述,該注解的作用就是從 指定的配置文件,并將文件中的 EnableAutoConfiguration 對應的配置項,通過反射機制,實例化為對應標注了 @Configuration 的形式的IoC容器配置類,然后注入IoC容器。
@ComponentScan
????????@ComponentScan 對應于XML配置形式中的 <context:component-scan>,用于將一些標注了特定注解的bean定義批量采集注冊到Spring的IoC容器之中,這些特定的注解大致有:@Controller、@Component、@Service、@Repository。