SpringBoot unit 1th

第一單元SpringBoot入門
1【授課重點】
1)SpringBoot空項目搭建,
2)SpringBoot發展歷史,
3)熱部署,
4)spring-boot-starter-web,
2【考覈要求】
1)SpringBoot空項目搭建,
2)RestController與Controller講解,
3)SpringBoot jsp頁面
4)在boot項目裏使用jstl標籤
3【教學內容】
3.1課程導入
一、爲何要有SpringBoot項目
二、SpringBoot和微服務的關係(沒有boot項目就沒有微服務)
三、公司新建項目採用的全是微服務
四、Springboot項目的穩定版本和最新版本(1.5,2.x)
五、SpringBoot的微服務比dubbo的微服務在開發和設計上更先進
3.2SpringBoot介紹
Spring Boot是一個基於Java的開源框架,用於建立微服務。它由Pivotal Team開發,用於構建獨立的生產就緒Spring應用。 本章將介紹Spring Boot,並熟悉基本概念。
3.2.1微服務是什麼?
微服務(Micro Service)是一種容許開發人員獨立開發和部署服務的體系結構。每一個運行的服務都有本身的流程,這實現了輕量級模型以支持業務應用程序。
例如
--員工微服務
--部門微服務
--教師微服務
--學生微服務
--班級微服務
----學生查詢的時候,會調用班級微服務
----員工查詢的時候,也會調用部門微服務
----思考在dubbo學習的時候,週考時,是否是讓咱們創建兩個微服務(provider,server)?兩個微服務能夠分開部署,性能會大大增長。
優勢:
Spring Boot爲其開發人員提供如下優點 -
易於理解和開發Spring應用
提升生產力
縮短開發時間
設計目標
Spring Boot的設計目標以下 -
避免在Spring中進行復雜的XML配置
以更簡單的方式開發生產就緒的Spring應用程序
隱藏和默認的方式使用Spring4
減小開發時間並獨立運行應用程序
提供一種更簡單的應用程序入門方式【前提是會用spring4,其實boot項目是易用,難精通,表面上是使用了boot項目,實際對boot,spring4,和springmvc和spring容器之間的關係難以掌握】,這裏理論的內容又每每是面試的重點
要想學會SpringBoot項目,必定要深入理解Spring4,對每一個註解都要充分理解。每一個註解在項目裏有什麼功能html

3.2.2爲何選擇Spring Boot?
選擇Spring Boot,由於它提供的功能和優勢以下 -
它提供了一種靈活的方法來配置Java Bean,XML配置和數據庫事務。
它提供強大的批處理和管理REST端點。(如今流行的rest請求,而不是咱們過去學習的socket的請求方式,或者是httpclient的請求方式)
在Spring Boot中,一切都是自動配置的; 無需手動配置。
它提供基於註釋的spring應用程序。
簡化依賴管理。
它包括嵌入式Servlet容器。
支持filter和interceptor。
3.2.3Spring Boot是如何工做的?
Spring Boot會根據使用@EnableAutoConfiguration批註添加到項目中的依賴項自動配置應用程序。 例如,若是MySQL數據庫在類路徑上,但還沒有配置任何數據庫鏈接,則Spring Boot會自動配置內存數據庫。
【boot 啓動類】重點
spring boot應用程序的入口點是包含@SpringBootApplication註釋和main方法的類。
Spring Boot使用@ComponentScan註釋自動掃描項目中包含的全部組件。
@ComponentScan(package name)
掃描多個包用逗號分隔,
Scan,掃描的意思
3.2.4Spring Boot Starters
處理依賴管理對於大項目來講是一項艱鉅的任務。 Spring Boot經過提供一組依賴項來解決此問題,以方便開發人員。
每個模塊,在boot項目裏,都有一個對應的starter。
例如,若是要使用Spring和JPA進行數據庫訪問,則在項目中包含spring-boot-starter-data-jpa依賴項就足夠了。
請注意,全部Spring Boot啓動程序都遵循相同的命名模式spring-boot-starter-,其中表示它是應用程序的一種類型。
例子
請看下面的Spring Boot啓動器,以便更好地理解 -
Actuator 監控boot項目運行時佔用內存的狀況】
Spring Boot Starter Actuator依賴關係用於監視和管理應用程序。 其代碼以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
XML
Spring Boot Starter Security依賴項用於Spring Security。 其代碼以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
XML
Spring Boot Starter Web依賴項用於編寫Rest端點。 其代碼以下所示 -
【Web starter 是很是經常使用的starter】
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
--這個starter很是經常使用
--通常管這個starter叫springboot的web starter
XML
Spring Boot Starter Thyme Leaf依賴項用於建立Web應用程序。 其代碼以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
這個是springboot推薦的開發html頁面的新技術。
XML
Spring Boot Starter Test依賴項用於編寫測試用例。 其代碼以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test<artifactId>
</dependency>java

3.3自動配置
【boot設計的目標是(爲了更少的配置文件),可是因爲版本過多,各個版本之間仍是有些差異(自動配置沒有boot項目說的那麼好),這不是boot的主要優勢】
【boot的優勢並非配置大於約定(說白了就是配置的xml的內容少些一些),而是微服務,微服務是boot流行起來的主要緣由,是不一樣於傳統的開發模式,其餘的全部語言(面向對象和非面嚮對象語言)都不具有這個特色】
【每個boot項目就是一個微服務】
【一個項目能夠拆分爲多個boot項目,每個boot項目就是一個微服務】
Spring Boot Auto Configuration會根據在項目中添加的JAR依賴項自動配置Spring應用程序。例如,若是MySQL數據庫在類路徑上,但還沒有配置任何數據庫鏈接,則Spring Boot會自動配置內存數據庫。
爲此,須要將@EnableAutoConfiguration批註或@SpringBootApplication批註添加到主類文件中。而後,將自動配置Spring Boot應用程序。
請注意如下代碼以便更好地理解web

image.png

3.4Spring Boot應用程序
Spring Boot Application的入口點是包含@SpringBootApplication註釋的類。該類應具備運行Spring Boot應用程序的主要方法。 @SpringBootApplication註釋包括自動配置,組件掃描和Spring Boot配置。
若是將@SpringBootApplication批註添加到類中,則無需添加@EnableAutoConfiguration,@ComponentScan和@SpringBootConfiguration批註。@SpringBootApplication註釋包括全部其餘註釋。
請注意如下代碼以便更好地理解面試

【boot 啓動類】spring

image.png

**很是重要,須要反覆練習
**反覆練習後,再看本單元的文字部分
--SpringBootApplication
--SpringApplication
--main函數,和以前學習的main函數有區別嗎?
--spring容器在boot項目裏如何取得?
什麼叫boot的啓動類?參考boot的reference,官方文檔
經常使用的官方文檔有1.5和2.x兩個版本。
如何啓動boot項目?
Boot啓動後的執行順序?先執行什麼,在執行什麼?
Boot項目的pom如何寫?
Spring的註解在boot項目裏能使用嗎?
若是在boot項目裏使用spring的技術,須要導入spring的jar包嗎?數據庫

3.5組件掃描
Spring Boot應用程序在應用程序初始化時掃描全部bean和包聲明。須要爲類文件添加@ComponentScan批註,以掃描項目中添加的組件。
請注意如下代碼以便更好地理解 -
【@ComponentScan 是 spring4裏 代替xml裏 component-scan 標籤的註解】
【提問:ssm項目xml裏component-scan是什麼功能?,沒有會怎麼樣?】
【springmvc裏,也有一個scan是什麼功能?沒有會怎麼樣?】編程

image.png

--項目裏有一個service,那麼啓動boot項目,spring會作什麼操做?
--通常狀況下,把spring容器比做什麼?
--spring的這種管理方式有什麼好處?
--默認狀況下,spring啓動後會作什麼操做?
IOC/DI在boot裏如何操做?tomcat

3.6下一單元將搭建一個Boot項目
Code demo
【demo 1 boot1th】springboot

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

啓動成功後,能夠看到,boot項目啓動後能夠看到啓動類和tomcat的端口號8080
--先整體的看一下項目的代碼,從eclipse裏
--分析每一行代碼,xml算代碼嗎?
--確認項目裏的maven是否好使
--eclipse如何使用maven?
--idea如何使用maven?
--創建maven項目的步驟是什麼?
--如何測試本地的maven是否好使?
--啓動類的命名爲何要有規則?
--spring-boot-maven-plugin是什麼?
--boot項目的默認配置文件時什麼,放在哪裏?mvc

Summary
--創建maven項目
--加載boot的jar包
--創建包結構,com.zz或則com.bw
--增長application.yml或則application.properties
--項目裏只能有一個默認配置文件,boot reference規定
--創建啓動類
--測試boot項目是否成功

【boot2th】
在boot1th的基礎上

image.png

image.png

image.png

啓動成功後:以下圖
image.png
--讀取的banner.txt

image.png

--6060是boot項目啓動的端口號
--com.zz.boot2thApp是啓動類

【搭建項目失敗沒關係,報錯也是效果,仔細排錯是編程必須的一個步驟,代碼不是敲出來的,是調試出來的,只有把錯誤解決了,纔是真正學會springboot】

【boot3th--part difficult point】
@Configuration和@Bean

在哪一個包下
image.png

屬於spring4的註解,和spring的原理一致
Bean id和getBean()方法和@Autowire註解
IOC/DI
控制反轉說的是讓spring new一個對象,DI說的是把一個對象賦值給bean裏的一個成員

下圖第一種形式,通常不採用,即不用@Bean後面帶參數的註解,只會默認的便可

image.png

從spring容器中取得persion對象,取得ppp對象,取得Ppp對象
【練習:取得p1對象,取得car1對象,取得保時捷car對象】
注意spring4 的原理

image.png

結論:@Configuration等價於<beans></beans>
注意觀察ssm項目裏,spring.xml

回憶一下專業6階段學習的IOC和DI的原理
全部在Controller裏注入的對象,都是spring IOC的生成的對象。若是springIOC沒有生成對象,那麼在Controller注入的對象必定是null,使用的時候就會發生NullPointerException

【IOC生成對象,DI把對象賦值到一個bean裏的某一個屬性上】
IOC/DI能大大提升java語言的性能,這是其餘語言不具有的,C++語言也沒法比擬,spring和java是使java成爲排名第一的語言,java排名第一不是由於java是面向對象的語言,是由於java有spring的幫助
須要深入理解Spring IOC/DI
推薦spring in action
To be continued

問題:
--@Configuration,@Bean是什麼技術,是boot的技術仍是mvc的技術?
--@Configuration用xml如何代替?
--@Bean如何用xml代替?

3.7【Eclipse下maven的配置】
Windows,preference,maven
Installations as below

image.png

User Settings

image.png

【Alt+F5】,更新項目的maven jar包
Plus,學校的網很差,下jar包的時候用手機熱點,下一次就能夠,之後就不用下了

【重要參考文獻】
https://www.yiibai.com/spring...

Spring mvc配置xml demo

![image.png](/img/bVby9Fk)
相關文章
相關標籤/搜索