多年來,隨着新功能的增長,spring變得愈來愈複雜。只需訪問頁面https://spring.io/projects,咱們將看到全部在應用程序中使用的不一樣功能的spring項目。若是必須啓動一個新的spring項目,咱們必須添加構建路徑或maven依賴項,配置application server,添加spring配置。所以,啓動一個新的spring項目須要大量的工做,由於咱們目前必須從頭開始作全部事情。Spring Boot是這個問題的解決方案。Spring boot構建在現有Spring框架之上。使用spring boot,咱們能夠避免之前必須執行的全部樣板代碼和配置。所以,Spring boot幫助咱們更健壯地使用現有的Spring功能,而且只需最少的工做量。html
減小開發、測試的時間和工做量。前端
使用JavaConfig有助於避免使用XML。java
避免大量maven導入和各類版本衝突。git
提供可選的開發方法。程序員
經過提供默認開發方式進行快速開發。github
不須要單獨的Web服務器。這意味着您再也不須要啓動Tomcat、Glassfish或其餘任何東西。web
因爲沒有web.xml文件,因此須要更少的配置。只需添加帶@ configuration註釋的類,而後能夠添加帶@ bean註釋的方法,Spring將自動加載對象並像往常同樣管理它。您甚至能夠將@Autowired添加到bean方法中,使Spring autowire成爲bean所需的依賴項。面試
基於環境的配置——使用這些屬性,您能夠將其傳遞到您正在使用的應用程序環境中:- dspring .profile .active={enviorement}。在加載主應用程序屬性文件以後,Spring將在(application-{environment}.properties)處加載後續的應用程序屬性文件。spring
Spring Boot應用程序可使用Maven和Gradle開發。sql
Spring JavaConfig是Spring社區的一個產品,它提供了一種純java方法來配置Spring IoC容器。所以,它有助於避免使用XML配置。使用JavaConfig的優勢是:
面向對象的配置。由於配置在JavaConfig中定義爲類,因此用戶能夠充分利用Java中的面向對象特性。一個配置類能夠子類化另外一個配置類,覆蓋它的@Bean方法,等等。
減小或消除XML配置。已經證實了基於依賴注入原則的外部化配置的好處。然而,許多開發人員不肯意在XML和Java之間來回切換。JavaConfig爲開發人員提供了一種純java方法來配置Spring容器,這種方法在概念上相似於XML配置。從技術上講,僅使用 JavaConfig配置類來配置容器是可行的,可是在實踐中,許多人發現將JavaConfig與XML混合並匹配是理想的。
類型安全的重構能力。JavaConfig提供了一種類型安全的配置Spring容器的方法。因爲Java 5.0對泛型的支持,如今能夠經過類型而不是名稱檢索bean,不須要進行任何基於類型轉換或字符串的查找。
這能夠經過開發工具來實現。有了這個依賴項,您保存的任何更改都將從新啓動嵌入的tomcat。Spring Boot有一個開發人員工具(DevTools)模塊,它有助於提升開發人員的工做效率。Java開發人員面臨的關鍵挑戰之一是將文件更改自動部署到服務器並自動重啓服務器。開發人員能夠在Spring引導時從新加載更改,而沒必要從新啓動服務器。這將消除每次手動部署更改的須要。Spring Boot在發佈第一個版本時沒有這個特性。這是開發人員最須要的特性。DevTools模塊徹底知足開發人員的需求。此模塊將在生產環境中禁用。它還提供了H2-database控制檯,以便更好地測試應用程序。使用如下依賴項
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional></dependency>
下面的示例演示了自動啓動和H2 DB控制檯的DevTool依賴項用法
Spring boot actuator是Spring boot framework的重要特性之一。Spring boot actuator幫助您訪問生產環境中正在運行的應用程序的當前狀態,在生產環境中必須檢查和監視幾個指標。甚至一些外部應用程序也可能使用這些服務來觸發對相關人員的警報消息。actuator模塊公開一組REST端點,這些端點能夠做爲HTTP URL直接訪問,以檢查狀態。
Spring Boot WAR部署
Docker是什麼
將基於Spring的WAR應用程序部署到Docker
將基於Spring的JAR應用程序部署到Docker
默認狀況下,全部敏感的HTTP端點都是安全的,只有具備ACTUATOR角色的用戶才能訪問它們。安全性是使用標準HttpServletRequest.isUserInRole方法實現的。
咱們可使用-禁用安全性
management.security.enabled = false
建議僅當在防火牆後訪問ACTUATOR端點時禁用安全性。
要在自定義端口上運行spring引導應用程序,能夠在application.properties中指定端口。
server.port = 8090
ELK堆棧由三個開源產品組成——Elasticsearch、Logstash和Kibana from Elastic。
Elasticsearch是一個基於Lucene搜索引擎的NoSQL數據庫。
Logstash是一個日誌管道工具,它接受來自不一樣來源的輸入,執行不一樣的轉換,並將數據導出到不一樣的目標。它是一個動態的數據收集管道,具備可擴展的插件生態系統和強大的彈性搜索協同做用
Kibana是一個可視化UI層,工做在Elasticsearch之上。
這三個項目一塊兒用於各類環境中的日誌分析。所以Logstash收集和解析日誌、彈性搜索索引並存儲這些信息,而Kibana提供了一個UI層,提供可操做的可見性。
SpringBoot爲編寫單元測試用例提供了@SpringBootTest
YAML是一種人類可讀的數據序列化語言。它一般用於配置文件。
與屬性文件相比,YAML文件的結構更加結構化,若是咱們但願在配置文件中添加複雜的屬性,那麼它不會形成太大的混亂。能夠看到,YAML具備分層的配置數據。
爲了實現Spring Boot的安全性,咱們使用Spring - Boot -starter-security依賴項,必須添加安全配置。它只須要不多的代碼。Config類必須擴展WebSecurityConfigurerAdapter並覆蓋它的方法。
爲了集成Spring Boot和ActiveMQ,咱們使用Spring - Boot -starter- ActiveMQ依賴項,它只須要不多的配置,沒有樣板代碼。
爲了集成Spring Boot和Apache Kafka,咱們使用Spring - Kafka依賴項。
使用Spring Boot實現分頁很是簡單。使用Spring Data-JPA,這是經過傳遞可分頁的org.springframe .data.domain來實現的。可分頁到存儲庫方法。
Swagger被普遍用於可視化api,Swagger UI爲前端開發人員提供在線沙箱環境。在本教程中,咱們將使用Swagger 2規範的Springfox實現。Swagger是一種工具、規範和完整的框架實現,用於生成RESTful Web服務的可視化表示。它容許文檔以與服務器相同的速度更新。當經過Swagger正肯定義時,使用者能夠用最少的實現邏輯理解遠程服務並與之交互。所以Swagger消除了調用服務時的猜想。
Spring Profiles容許用戶根據配置文件(dev, test, prod等)註冊bean。所以,當應用程序在開發中運行時,只能加載某些bean,當應用程序在生產中運行時,只能加載某些其餘bean。假設咱們的需求是Swagger文檔只對QA環境啓用,對全部其餘環境禁用。這可使用配置文件來完成。Spring Boot使得使用配置文件很是容易。
Spring Boot Batch提供了處理大量記錄所必需的可重用功能,包括日誌/跟蹤、事務管理、做業處理統計信息、做業重啓、做業跳過和資源管理。它還提供了更高級的技術服務和特性,經過優化和分區技術,這些特性將支持極高容量和高性能的批處理做業。不管是簡單的仍是複雜的,大容量批處理做業均可以以高度可伸縮的方式利用該框架來處理大量信息。
答:FreeMarker是一個基於java的模板引擎,最初專一於使用MVC軟件架構生成動態web頁面。使用Freemarker的主要優點是徹底分離了表示層和業務層。程序員能夠處理應用程序代碼,而設計人員能夠處理html頁面設計。最後,使用freemarker,這些能夠組合在一塊兒,給出最終的輸出頁面。
Spring提供了一種很是有用的方法,可使用ControllerAdvice處理異常。咱們將實現一個ControlerAdvice類,它將處理控制器類拋出的全部異常。
緩存是本地內存的一個區域,它保存了頻繁訪問的數據的副本,不然獲取或計算這些數據將很是昂貴。使用Hazelcast進行緩存。
是的。使用Spring Boot公開了要使用的web服務。使用契約優先的方法從wsdl生成類。
使用Spring MVC HandlerInterceptor與Spring引導
使用過不一樣的starter依賴項,如spring-boot-starter-activemq依賴項、spring-boot-starter-security依賴項、spring-boot-starter-web依賴項。
這有助於減小依賴項的數量,並減小版本組合。
CSRF表明跨站請求僞造。它是一種攻擊,迫使最終用戶在其當前已通過身份驗證的web應用程序上執行不須要的操做。CSRF攻擊專門針對狀態更改請求,而不是數據竊取,由於攻擊者沒法看到對僞造請求的響應。
gzip是一種文件格式,是一種用於文件壓縮和解壓縮的軟件應用程序。
已將Apache Camel與Spring引導集成。使用Apache Camel Spring啓動啓動依賴項。
JSP是爲網頁量身定作的,Freemarker模板是一種更通用的模板語言——它能夠用來生成html、純文本、電子郵件等。
WebSocket是一種計算機通訊協議,經過單個TCP鏈接提供全雙工通訊通道。
WebSocket是雙向的——使用WebSocket客戶端或服務器均可以發起發送消息。
WebSocket是全雙工的——客戶端和服務器之間的通訊是相互獨立的。
單個TCP鏈接——初始鏈接使用HTTP,而後將此鏈接升級爲基於套接字的鏈接。而後,這個單一鏈接將用於將來的全部通訊
輕- WebSocket消息數據交換比http輕得多。
Spring Boot + WebSockets的例子
在軟件開發過程當中,跨越應用程序多個點的功能稱爲橫切關注點。這些橫切關注點不一樣於應用程序的主要業務邏輯。所以,將這些橫切關注點從業務邏輯中分離出來是面向方面編程(AOP)的切入點。
apache Kafka是一個分佈式發佈-訂閱消息傳遞系統。它是一個可伸縮的、容錯的、發佈-訂閱消息傳遞系統,使咱們可以構建分佈式應用程序。這是一個Apache頂級項目。Kafka適用於離線和在線的消息消費。
Spring Boot提供了actuator 端點來監控單個微服務的指標。這些端點對於獲取關於應用程序的信息很是有幫助,好比應用程序是否啓動,它們的組件(如數據庫等)是否正常工做。可是,使用actuator 接口的一個主要缺點或困難是,咱們必須逐個命中這些接口,以瞭解應用程序的狀態或健康情況。假設微服務涉及50個應用程序,管理員將不得不命中全部50個應用程序的actuator 端點。爲了幫助咱們處理這種狀況,咱們將使用位於https://github.com/codecentric/springing-boot-admin的開源項目。
它構建在Spring Boot Actuator之上,提供了一個web UI,使咱們可以可視化多個應用程序的指標。
使用過Netflix Eureka等Spring Cloud組件進行服務註冊,Ribbon用於負載平衡。
Spring Boot + Cloud Components
Spring Cloud interview Questions
Deploying Spring Boot Application to PCF
Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + MySQL Application to PCF
Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + RabbitMQ Application to PCF
針對於上面的文章我總結出了互聯網公司java程序員面試涉及到的絕大部分面試題及答案作成了文檔和架構視頻資料免費分享給你們(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分佈式、高併發等架構技術資料),但願能幫助到您面試前的複習且找到一個好的工做,也節省你們在網上搜索資料的時間來學習。
分享+關注我,點擊進入【Java高級互聯網架構:964357187】免費領取面試資料
合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!
做者:Java架構之路 連接:https://www.jianshu.com/p/557efae11c6f 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。