Spring Boot 是微服務中最好的 Java 框架. 咱們建議你可以成爲一名 Spring Boot 的專家.html
SpringFramework 最重要的特徵是依賴注入。全部 SpringModules 不是依賴注入就是 IOC 控制反轉。java
當咱們恰當的使用 DI 或者是 IOC 的時候,咱們能夠開發鬆耦合應用。鬆耦合應用的單元測試能夠很容易的進行。mysql
Spring MVC 提供了一種分離式的方法來開發 Web 應用。經過運用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些簡單的概念,開發 Web 應用將會變的很是簡單。git
Spring 和 SpringMVC 的問題在於須要配置大量的參數。github
Spring Boot 經過一個自動配置和啓動的項來目解決這個問題。爲了更快的構建產品就緒應用程序,Spring Boot 提供了一些非功能性特徵。web
Spring 和 SpringMVC 的問題在於須要配置大量的參數。面試
咱們可否帶來更多的智能?當一個 MVC JAR 添加到應用程序中的時候,咱們可否自動配置一些 beans?spring
Spring 查看(CLASSPATH 上可用的框架)已存在的應用程序的配置。在此基礎上,Spring Boot 提供了配置應用程序和框架所須要的基本配置。這就是自動配置。sql
啓動器是一套方便的依賴沒描述符,它能夠放在本身的程序中。你能夠一站式的獲取你所須要的 Spring 和相關技術,而不須要依賴描述符的經過示例代碼搜索和複製黏貼的負載。數據庫
例如,若是你想使用 Sping 和 JPA 訪問數據庫,只須要你的項目包含 spring-boot-starter-data-jpa 依賴項,你就能夠完美進行。
## 問題四:你可否舉一個例子來解釋更多 Staters 的內容?
讓咱們來思考一個 Stater 的例子 -Spring Boot Stater Web。
若是你想開發一個 web 應用程序或者是公開 REST 服務的應用程序。Spring Boot Start Web 是首選。讓咱們使用 Spring Initializr 建立一個 Spring Boot Start Web 的快速項目。
Spring Boot Start Web 的依賴項
下面的截圖是添加進咱們應用程序的不一樣的依賴項
依賴項能夠被分爲
Spring - core,beans,context,aop
Web MVC - (Spring MVC)
Jackson - for JSON Binding
Validation - Hibernate,Validation API
Enbedded Servlet Container - Tomcat
Logging - logback,slf4j
任何經典的 Web 應用程序都會使用全部這些依賴項。Spring Boot Starter Web 預先打包了這些依賴項。
做爲一個開發者,我不須要再擔憂這些依賴項和它們的兼容版本。
Spring Boot 也提供了其它的啓動器項目包括,包括用於開發特定類型應用程序的典型依賴項。
spring-boot-starter-web-services - SOAP Web Services
spring-boot-starter-web - Web 和 RESTful 應用程序
spring-boot-starter-test - 單元測試和集成測試
spring-boot-starter-jdbc - 傳統的 JDBC
spring-boot-starter-hateoas - 爲服務添加 HATEOAS 功能
spring-boot-starter-security - 使用 SpringSecurity 進行身份驗證和受權
spring-boot-starter-data-jpa - 帶有 Hibeernate 的 Spring Data JPA
spring-boot-starter-data-rest - 使用 Spring Data REST 公佈簡單的 REST 服務
Spring Boot 致力於快速產品就緒應用程序。爲此,它提供了一些譬如高速緩存,日誌記錄,監控和嵌入式服務器等開箱即用的非功能性特徵。
spring-boot-starter-actuator - 使用一些如監控和跟蹤應用的高級功能
spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat - 選擇您的特定嵌入式 Servlet 容器
spring-boot-starter-logging - 使用 logback 進行日誌記錄
spring-boot-starter-cache - 啓用 Spring Framework 的緩存支持
###Spring2 和 Spring5 所須要的最低 Java 版本是什麼?
Spring Boot 2.0 須要 Java8 或者更新的版本。Java6 和 Java7 已經再也不支持。
推薦閱讀:
Spring Initializr是啓動 Spring Boot Projects 的一個很好的工具。
不是的。
Spring Initiatlizr 讓建立 Spring Boot 項目變的很容易,可是,你也能夠經過設置一個 maven 項目並添加正確的依賴項來開始一個項目。
在咱們的 Spring 課程中,咱們使用兩種方法來建立項目。
第一種方法是 start.spring.io 。
另一種方法是在項目的標題爲「Basic Web Application」處進行手動設置。
手動設置一個 maven 項目
這裏有幾個重要的步驟:
到這裏,準備工做已經作好!
spring-boot-maven-plugin 提供了一些像 jar 同樣打包或者運行應用程序的命令。
使用 Spring Boot 開發工具。
把 Spring Boot 開發工具添加進入你的項目是簡單的。
把下面的依賴項添加至你的 Spring Boot Project pom.xml 中
重啓應用程序,而後就能夠了。
一樣的,若是你想自動裝載頁面,有能夠看看 FiveReload
在我測試的時候,發現了 LiveReload 漏洞,若是你測試時也發現了,請必定要告訴咱們。
思考一下在你的虛擬機上部署應用程序須要些什麼。
第一步: 安裝 Java
第二部: 安裝 Web 或者是應用程序的服務器(Tomat/Wbesphere/Weblogic 等等)
第三部: 部署應用程序 war 包
若是咱們想簡化這些步驟,應該如何作呢?
讓咱們來思考如何使服務器成爲應用程序的一部分?
你只須要一個安裝了 Java 的虛擬機,就能夠直接在上面部署應用程序了,
是否是很爽?
這個想法是嵌入式服務器的起源。
當咱們建立一個能夠部署的應用程序的時候,咱們將會把服務器(例如,tomcat)嵌入到可部署的服務器中。
例如,對於一個 Spring Boot 應用程序來講,你能夠生成一個包含 Embedded Tomcat 的應用程序 jar。你就能夠想運行正常 Java 應用程序同樣來運行 web 應用程序了。
嵌入式服務器就是咱們的可執行單元包含服務器的二進制文件(例如,tomcat.jar)。
在源文件夾下,建立一個名爲 static 的文件夾。而後,你能夠把你的靜態的內容放在這裏面。
例如,myapp.js 的路徑是 resources\static\js\myapp.js
你能夠參考它在 jsp 中的使用方法
錯誤:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.
該如何來修復這個錯誤呢?
兩種方法:
方法 1:關閉安全驗證
application.properties
方法二:在日誌中搜索密碼並傳遞至請求標頭中
來自://projects.spring.io/spring- data/
Spring Data 的使命是在保證底層數據存儲特殊性的前提下,爲數據訪問提供一個熟悉的,一致性的,基於 Spring 的編程模型。這使得使用數據訪問技術,關係數據庫和非關係數據庫,map-reduce 框架以及基於雲的數據服務變得很容易。
爲了讓它更簡單一些,Spring Data 提供了不受底層數據源限制的 Abstractions 接口。
下面來舉一個例子
你能夠定義一簡單的庫,用來插入,更新,刪除和檢索代辦事項,而不須要編寫大量的代碼。
Spring Data TEST 能夠用來發布關於 Spring 數據庫的 HATEOAS RESTful 資源。
下面是一個使用 JPA 的例子
不須要寫太多代碼,咱們能夠發佈關於 Spring 數據庫的 RESTful API。
下面展現的是一些關於 TEST 服務器的例子
POST
代碼以下
響應內容
響應包含新建立資源的 href。
若是你使用 Eclipse IDE,Eclipse maven 插件確保依賴項或者類文件的改變一經添加,就會被編譯並在目標文件中準備好!在這以後,就和其它的 Java 應用程序同樣了。
當你啓動 java 應用程序的時候,spring boot 自動配置文件就會魔法般的啓用了。
在 spring-boot-starter-web 移除現有的依賴項,並把下面這些添加進去。
## 問題十七 如何使用 Spring Boot 生成一個 WAR 文件?
推薦閱讀:
下面有 spring 說明文檔直接的連接地址:
你須要作下面兩個步驟:
在一個項目中生成一個 war 文件。
將它部署到你最喜歡的服務器(websphere 或者 Weblogic 或者 Tomcat and so on)。
第一步:這本入門指南應該有所幫助:
spring.io/guides/gs/c…
第二步:取決於你的服務器。
RequestMapping 具備類屬性的,能夠進行 GET,POST,PUT 或者其它的註釋中具備的請求方法。
GetMapping 是 GET 請求方法中的一個特例。它只是 ResquestMapping 的一個延伸,目的是爲了提升清晰度。
咱們認爲 Spring Data Rest 很適合快速原型製造!在大型應用程序中使用須要謹慎。
經過 Spring Data REST 你能夠把你的數據實體做爲 RESTful 服務直接發佈。
當你設計 RESTful 服務器的時候,最佳實踐代表,你的接口應該考慮到兩件重要的事情:
經過 With Spring Data REST,你不須要再考慮這兩個方面,只須要做爲 TEST 服務發佈實體。
這就是爲何咱們建議使用 Spring Data Rest 在快速原型構造上面,或者做爲項目的初始解決方法。對於完整演變項目來講,這並非一個好的注意。
好消息是你能夠定製它。點擊連接「轉到完整版本」。你能夠配置你想要修改的包名稱!
這裏是完整的指南:
簡而言之
當咱們使用 JPA 的時候,咱們使用 javax.persistence 包中的註釋和接口時,不須要使用 hibernate 的導入包。
咱們建議使用 JPA 註釋,由於哦咱們沒有將其綁定到 Hibernate 做爲實現。後來(我知道 - 小於百分之一的概率),咱們可使用另外一種 JPA 實現。
咱們建議在服務層管理義務。商業業務邏輯在商業層或者服務層,與此同時,你想要執行的業務管理也在該層。
在 Spring Boot 項目中,當你確保下面的依賴項都在類路里面的時候,你能夠加載 H2 控制檯。
其它的依賴項在下面:
須要注意的一些地方:
由於 Spring Boot 是自動配置的。
下面是咱們添加的依賴項
spring-boot-stater-data-jpa 對於 Hibernate 和 JPA 有過渡依賴性。
當 Spring Boot 在類路徑中檢測到 Hibernate 中,將會自動配置它爲默認的 JPA 實現。
這就是 Spring Boot 自動配置的魔力。
來自:docs.spring.io/spring-boot…
Spring Boot auto-configuration 試圖自動配置你已經添加的基於 jar 依賴項的 Spring 應用程序。好比說,若是 HSQLDBis 存在你的類路徑中,而且,數據庫鏈接 bean 尚未手動配置,那麼咱們能夠自動配置一個內存數據庫。
進一步的閱讀:
www.springboottutorial.com/spring-boot…
讓咱們以 MySQL 爲例來思考這個問題:
第一步 - 把 mysql 鏈接器的依賴項添加至 pom.xml
第二步 - 從 pom.xml 中移除 H2 的依賴項
或者至少把它做爲測試的範圍。
第三步 - 安裝你的 MySQL 數據庫
更多的來看看這裏 -github.com/in28minutes…
第四步 - 配置你的 MySQL 數據庫鏈接
配置 application.properties
第五步 - 從新啓動,你就準備好了!
就是這麼簡單!
在 application.properties 裏面,列出了全部的默認值
找到下面的屬性
若是你使用了 H2 內部存儲數據庫,它裏面肯定了 Spring Boot 用來安裝你的 H2 數據庫的名字。
將會報下面的錯誤
把 H2 添加至 pom.xml 中,而後重啓你的服務器
@Value 的問題在於,您能夠經過應用程序分配你配置值。更好的操做是採起集中的方法。
你可使用 @ConfigurationProperties 定義一個配置組件。
你能夠在 application.properties 中配置參數。
企業應用程序的開發是複雜的,你須要混合的環境:
在每一個環境中,你想要不一樣的應用程序配置。
配置文件有助於在不一樣的環境中進行不一樣的應用程序配置。
Spring 和 Spring Boot 提供了你能夠制定的功能。
Spring Boot 將會根據特定環境中設置的活動配置文件來選擇應用程序的配置。
## 問題三十四 如何使用配置文件經過 Spring Boot 配置特定環境的配置?
配置文件不是設別環境的關鍵。
在下面的例子中,咱們將會用到兩個配置文件
缺省的應用程序配置在 application.properties 中。讓咱們來看下面的例子:
application.properties
咱們想要爲 dev 文件自定義 application.properties 屬性。咱們須要建立一個名爲 application-dev.properties 的文件,而且重寫咱們想要自定義的屬性。
application-dev.properties
一旦你特定配置了配置文件,你須要在環境中設定一個活動的配置文件。
有多種方法能夠作到這一點: