1.1 什麼是spring
將bean裝配在一起的行為是通過一種基於依賴注入(dependency injection, di)的模式實現的。此時,元件不會再去建立它所依賴的元件並管理它們的生命週期,使用依賴注入的應用依賴於單獨的實體(容器)來建立和維護所有的元件,並將其注入到需要它們的bean中。通常,這是通過構造器引數和屬性訪問方法來實現的。
相對於基於xml的配置方式,基於j**a的配置會帶來多項額外的收益,包括更強的型別安全性以及更好的重構能力。即便如此,不管是使用j**a還是使用xml的顯示配置,只有當spring不能進行自動配置的時候才是必要的。
在spring技術中,自動配置起源於所謂的自動裝配(autowiring)和元件掃瞄(component scanning)。借助元件掃瞄技術,spring能夠自動發現應用類路徑下的元件,並將它們建立成spring應用上下文中的bean。借助自動裝配技術,spring能夠自動為元件注入它們所依賴的其他bean。
隨著spring boot的引入,自動配置的能力已經遠遠超出了元件掃瞄和自動裝配。spring boot是spring框架的擴充套件,提供了很多增強生產效率的方法。最為大家所熟知的增強方法就是自動配置(auto configuration),spring boot能夠基於類路徑中的條目、環境變數和其他因素合理猜測需要配置的元件並將它們裝配在一起。
1.2 初始化spring應用
// 在eclipse中安裝spring tool suite
環境:windows 10 + j**a 8 -> eclipse 2019-12(eclipse\j**a\sts版本需適應)
無法開啟marketplace的情況下,使用install new software…
// spring官網上有教程,涉及模組選擇;
網路暢通情況下,即可順利安裝。
預設情況下,新專案的嚮導會呼叫spring initializr來生成專案。通常情況下,沒有必要覆蓋最後一頁base url的預設值。但是,如果你基於某種原因託管了自己的initializr轉殖版本(可能是本地機器上的副本或者公司防火牆內部執行的自定義轉殖版本),那麼你可能需要在點選finish之前修改base url輸入域,使其指向自己的initializr例項。
pom.xml中,設定在spring initializr中缺省會使用基於jar的打包方式,除非我們明確告訴它採用其他的方式。
傳統的j**a web應用都是打包成war檔案,jar只是用來打包庫和較為少見的桌面ui應用的。打包為jar檔案是基於雲思維做出的選擇。
如果想要將應用部署到傳統的j**a應用伺服器上,那麼需要選擇使用基於war的打包方式並要包含乙個web初始化類。
// 取消eclipse自動摺疊import語句
@springbootconfiguration:將該類聲名為配置類;
這個註解實際上是@configuration註解的特殊形式;
@enableautoconfiguration:啟動spring boot的自動配置;
@componentscan:啟動元件掃瞄;
這樣我們能夠通過像@component、@controller、@service這樣的註解聲名其他類,spring會自動發現它們並將它們註冊為spring應用上下文中的元件。
即使這個類中只有乙個空的測試方法,這個測試類還是會執行必要的檢查,確保spring上下文能夠成功載入。如果你所做的變更導致spring上下文無法建立,那麼這個測試將會失敗,你就可以做出反應來解決相關的問題了。
即便沒有任何斷言或**,這個空的測試方法也會提示這兩個註解完成了它們的工作並成功載入spring應用上下文。
1.3 編寫spring應用
@controller註解的主要目的是讓元件掃瞄將這個類識別為乙個元件。
homecontroller帶有@controller,所以spring的元件掃瞄功能會自動發現它,並建立乙個homecontroller例項作為spring應用上下文中的bean。
實際上,有一些其他的註解與@controller有著類似的目的(包括@component、@service和@repository)。新增上述任意其他註解,其作用是完全相同的。但是選擇使用@controller更能描述這個元件在應用中的角色。
模板名稱是有邏輯檢視名派生而來的,再加上"/templates/"字首和".html"字尾。最終形成的模板路徑將是"/templates/home.html"。
tomcat是應用的一部分。
devtools:
應用自動重啟;
但,在構建規範中新增、變更或移除依賴的時候,為了讓變更生效,我們需要重啟應用。
瀏覽器自動重新整理和禁用模板快取;
可以對模板進行任意數量的修改,只需重新整理一下瀏覽器。
devtools執行的時候,會和應用程式一起,同時自動啟動乙個livereload伺服器。當它與livereload瀏覽器外掛程式(chrome\safari\firefox)結合起來的時候,就能夠在模板、、樣式表、j**ascript等發生變化時自動重新整理瀏覽器。
內建的h2控制台;
如果使用h2資料庫進行開發,devtools會自動啟動h2。http://localhost:8080/h2-console
1.4 俯瞰spring風景線
spring核心框架
spring boot
spring data
spring security
spring integration和spring batch
spring cloud
第1章 導言
本章作為整個c語言學習的框架 1.1 入門 轉義字元 n只代表乙個字元。轉義字元為表示無法輸入的字元或不可見的字元提供一種通用可擴充的機制。t 製表符,b 回退符,雙引號,反斜槓符本身。要將它們列印出來,則在斜槓前再加 前加 1.2 變數與算術表示式 1 c語言中,所有變數都必須在函式起始處先宣告,...
第1章 起點
第1章起點 寫乙個最最簡單的程式 hello world。print hello world 假定你把上面這句儲存在 hello.lua 檔案中,你在命令列只需要 prompt lua hello.lua 看到結果了嗎?讓我們來看乙個稍微複雜點的例子 defines a factorial func...
第1章 簡介
桉樹企業版 ee 2.0是乙個基於linux體系架構,對企業資源 硬體 儲存 網路 統一管理的雲平台。桉樹雲是iaas層面的雲平台,對基礎裝置進行管理和擴充套件,為企業提供私有雲 可以部署在企業的防火牆之內,僅供企業內部使用,確保資料的安全性 和混合雲部署方案。桉樹在設計之初就考慮了易用性 模組化和...