你們好,我是Java最全面試題庫
的提褲姐,今天這篇是JavaEE面試題系列的第七篇,主要總結了SpringBoot
相關的問題,在後續,會沿着第一篇開篇的知識線路一直總結下去,作到日更!若是我能作到百日百更,但願你也能夠跟着百日百刷,一百天養成一個好習慣。web
用來簡化spring應用的初始搭建以及開發過程,使用特定的方式來進行配置(properties
或yml
文件)建立獨立的spring引用程序 main方法運行,嵌入的Tomcat 無需部署war文件,簡化maven配置,自動配置spring添加對應功能starter自動化配置面試
一、SpringSpring最重要的特徵是依賴注入。全部 SpringModules
不是依賴注入就是 IOC 控制反轉。當咱們恰當的使用 DI 或者是 IOC 的時候,咱們能夠開發鬆耦合應用。鬆耦合應用的單元測試能夠很容易的進行。
二、Spring MVC提供了一種分離式的方法來開發 Web 應用。經過運用像 DispatcherServelet
,MoudlAndView
和 ViewResolver
等一些簡單的概念,開發 Web 應用將會變的很是簡單。
三、Spring 和 SpringMVC 的問題在於須要配置大量的參數。
四、Spring Boot 經過一個自動配置和啓動的項來目解決這個問題。爲了更快的構建產品就緒應用程序,Spring Boot 提供了一些非功能性特徵。redis
一、@SpringBootConfiguration
:組合了 @Configuration 註解,實現配置文件的功能。
二、@EnableAutoConfiguration
:打開自動配置的功能,也能夠關閉某個自動配置的選項,如關閉數據源自動配置功能。
三、@ComponentScan
:Spring組件掃描。spring
一、面向對象的配置
。因爲配置被定義爲 JavaConfig 中的類,所以用戶能夠充分利用 Java 中的面向對象功能。一個配置類能夠繼承另外一個,重寫它的@Bean 方法等。
二、減小或消除 XML 配置
。基於依賴注入原則的外化配置的好處已被證實。可是,許多開發人員不但願在 XML 和 Java 之間來回切換。JavaConfig 爲開發人員提供了一種純 Java 方法來配置與 XML 配置概念類似的 Spring 容器。從技術角度來說,只使用 JavaConfig 配置類來配置容器是可行的,但實際上不少人認爲將JavaConfig 與 XML 混合匹配是理想的。
三、類型安全和重構友好
。JavaConfig 提供了一種類型安全的方法來配置 Spring容器。因爲 Java 5.0 對泛型的支持,如今能夠按類型而不是按名稱檢索 bean,不須要任何強制轉換或基於字符串的查找。數據庫
YAML是一種人類可讀的數據序列化語言。它一般用於配置文件
。
與屬性文件相比,若是咱們想要在配置文件中添加複雜的屬性,YAML文件就更加結構化,並且更少混淆。能夠看出YAML具備分層配置數據
。bootstrap
一、Spring Cloud 構建於 Spring Boot 之上,在 Spring Boot 中有兩種上下文,一種是 bootstrap,另一種是 application。
二、application 配置文件這個容易理解,主要用於 Spring Boot 項目的自動化配置
。
三、bootstrap 是應用程序的父上下文,也就是說 bootstrap 加載優先於 applicaton
。
四、bootstrap 主要用於從額外的資源來加載配置信息
,還能夠在本地外部配置文件中解密屬性。
五、這兩個上下文共用一個環境
,它是任何Spring應用程序的外部屬性的來源。
六、bootstrap 裏面的屬性會優先加載
,它們默認也不能被本地相同配置覆蓋。
七、boostrap 由父 ApplicationContext 加載,比 applicaton 優先加載
八、boostrap 裏面的屬性不能被覆蓋
tomcat
一、spring-boot-starter-web
(嵌入tomcat和web開發須要servlet與jsp支持)
二、spring-boot-starter-data-jpa
(數據庫支持)
三、spring-boot-starter-data-redis
(redis數據庫支持)
四、spring-boot-starter-data-solr
(solr搜索應用框架支持)
五、mybatis-spring-boot-starter
(第三方的mybatis集成starter)安全
一、properties文件
二、YAML文件
三、系統環境變量
四、命令行參數springboot
@PropertySource
@Value
@Environment
@ConfigurationPropertie
SpringControllerAdvice
提供了一種使用處理異常的很是有用的方法。經過實現一個 ControllerAdvice
類,來處理控制器類拋出的全部異常。服務器
使用DEV工具來實現。
經過這種依賴關係,能夠節省任何更改,嵌入式 tomcat將從新啓動。
使用Spring Boot有一個開發工具Dev Tools
模塊,能夠從新加載 Spring Boot上的更改,而無需從新啓動服務器。消除每次手動部署更改的須要。 Spring Boot在發佈它的第一個版本時沒有這個功能。該模塊將在生產環境中被禁用。它還提供H2數據庫控制檯以更好地測試應用程序。
Spring boot actuatorspring
是啓動框架中的重要功能之一。 Spring boot監視器可訪問生產環境中正在運行的應用程序的當前狀態。有幾個指標必須在生產環境中進行檢查和監控。即便一些外部應用程序可能正在使用這些服務來向相關人員觸發警報消息。監視器模塊公開了一組可直接做爲 http url rest
訪問的REST端點來檢查狀態。
在 application.properties
中指定端口serverport=8090
。
一、經過app.addListeners
註冊進入
二、初始化一個SpringApplicationRunListeners
進行處理
三、從spring.factories
中讀取監聽器處理類EventPublishingRunListener
四、經過createSpringFactoriesInstances
建立監聽器處理類實例
五、調用監聽器listeners.starting()
的方法來啓動。
六、底層把事件處理交給線程池
去處理
一、調用prepareEnvironment
方法去設置環境變量
二、接下來有三個方法getOrCreateEnvironment
,configureEnvironment
,environmentPrepared
三、getOrCreateEnvironment
去初始化系統環境變量
四、configureEnvironment
去初始化命令行參數
五、environmentPrepared
當廣播到來的時候調用onApplicationEnvironmentPreparedEvent
方法去使用postProcessEnvironment
方法load yml
和properties變量
一、調用run方法中的refreshContext
方法
二、用AbstractApplicationContext中的refresh
方法
三、委託給invokeBeanFactoryPostProcessors
去處理調用鏈
四、其中一個方法postProcessBeanDefinitionRegistry會
去調用processConfigBeanDefinitions
解析beandefinitions
五、在processConfigBeanDefinitions
中有一個parse
方法,其中有componentScanParser.parse
的方法,這個方法會掃描當前路徑下全部Component
組件
默認狀況下,全部敏感的HTTP端點都是安全的,只有具備 http ACTUATOR
角色的用戶才能訪問它們。安全性是使用標準的 httpservletrequest. isuserinrole..isusernrole
方法實施的。可使用 management. security. enabled= false
來禁用安全性。只有在執行機構端點在防火牆後訪問時,才建議禁用安全性。
使用 spring--startersecurityboot
--依賴項,而且必須添加安全配置。配置類將必須擴展 WebSecurityConfigurerAdapter
並覆蓋其方法。
Spring Boot Batch
提供可重用的函數,這些函數在處理大量記錄時很是重要;包括日誌/跟蹤,事務管理,做業處理統計信息,做業從新啓動,跳過和資源管理。它還提供了更先進的技術服務和功能,經過優化和分區技術,能夠實現極高批量和高性能批處理做業。簡單以及複雜的大批量批處理做業能夠高度可擴展的方式利用框架處理重要大量的信息。