一文帶你輕松應(yīng)對(duì)Springboot面試小結(jié)
1. SpringBoot 簡介
SpringBoot 是簡化 Spring 應(yīng)用開發(fā)的一個(gè)框架。他整合了 Spring 的技術(shù)棧,提供各種標(biāo)準(zhǔn)化的默認(rèn)配置。使得我們可以快速開發(fā) Spring 項(xiàng)目,免掉 xml 配置的麻煩。降低 Spring 項(xiàng)目的成本。
2. SpringBoot 的優(yōu)缺點(diǎn)
使編碼配置部署都變得很簡單。缺點(diǎn)可能就是自動(dòng)注入的 bean ,不是特別清楚,有可能會(huì)沖突。
3. SpringBoot 如何固定版本
一種是 parenet 的時(shí)候直接固定。
一種是通過 dependcy 來固定,因?yàn)榭赡墚?dāng)前項(xiàng)目已經(jīng)有父項(xiàng)目。

4. SpringBoot 的使用方式
maven 中父項(xiàng)目導(dǎo)入 Springboot 的啟動(dòng)器。然后編寫一個(gè)主程序打上 SpringBootApplication 注解。通過 run 方法就可以啟動(dòng)。
5. SpringBoot 自動(dòng)配置原理
首先可以看到啟動(dòng)類上面有一個(gè) SpringBootApplication 注解,點(diǎn)進(jìn)去之后,又 EnableAutoConfiguration 注解。然后再進(jìn)去,發(fā)現(xiàn)有個(gè) @Import 注解,其導(dǎo)入的是 EnableAutoConfigurationImportSelector 類。再看這個(gè)類,他是集成了一個(gè)抽象的 AutoConfigutationimportSelector 。再往上就是接口 ImportSelector 。然后如果實(shí)現(xiàn)了接口的 selectImport 接口就會(huì)將其中的返回的數(shù)組全部加載到 Spring 容器中。其中實(shí)現(xiàn)的最主要的地方是 getCandidateConfigurations 方法。那個(gè)方法內(nèi)部實(shí)現(xiàn)就是回去讀取 meta-inf 下的 spring.factories 。所以主要在那里面配置的類就都會(huì)被自動(dòng)加載。
6. SpringBoot 配置文件注入

注入實(shí)體類中,實(shí)體類可以使用 @ConfigurationProperties(prefix = "person") 注解。

7. @Value 和 @ConfigurationProperties 比較

8.@PropertySource
加載指定的配置文件。如下,如果不聲明的話,將從主配置文件加載。

9.@ImportResource
導(dǎo)入 Spring 的配置文件,讓配置文件里面的內(nèi)容生效;這種方式比如一個(gè)類沒有使用 @Componet 注解注冊(cè)進(jìn)容器,則使用自動(dòng)裝配 autowired 找不到。引入文件后,即可找到。
Spring Boot 里面沒有 Spring 的配置文件,我們自己編寫的配置文件,也不能自動(dòng)識(shí)別;
想讓 Spring 的配置文件生效,加載進(jìn)來; @**ImportResource** 標(biāo)注在一個(gè)配置類上

10. springboot 的 profile 加載
在配置文件的時(shí)候,我們可以建立多個(gè)。用 - 進(jìn)行結(jié)尾。通過主配置文件,配置 profiles 的 active 就可以指定加載文件。
在同一個(gè)文件中, yml 文件支持文檔塊的寫法,為 --- 。

11. SpringBoot 激活指定 profile 的幾種方式
第一種:直接在配置文件中通過 active 指定
第二種:通過 java -jar 的參數(shù)指定


第三種:通過虛擬機(jī)參數(shù)

12. SpringBoot 項(xiàng)目內(nèi)部配置文件加載順序
順序如下;


優(yōu)先級(jí)由高到底,高優(yōu)先級(jí)的配置會(huì)覆蓋低優(yōu)先級(jí)的配置;
SpringBoot 會(huì)從這四個(gè)位置全部加載主配置文件; ** 互補(bǔ)配置 ** ;
我們還可以通過 spring.config.location 來改變默認(rèn)的配置文件位置
項(xiàng)目打包好以后,我們可以使用命令行參數(shù)的形式,啟動(dòng)項(xiàng)目的時(shí)候來指定配置文件的新位置;指定配置文件和默認(rèn)加載的這些配置文件共同起作用形成互補(bǔ)配置;

13. SpringBoot 外部配置文件加載順序
這個(gè)挺多的,我們就幾個(gè)重要的。
高優(yōu)先級(jí)的會(huì)覆蓋低優(yōu)先級(jí)的。
命令行上的參數(shù)配置是優(yōu)先級(jí)最高的。
jar 包外的帶 profile 的配置文件。
jar 包內(nèi)的帶 profile 的配置文件。
jar 包外的不帶 profile 的配置文件。
jar 包內(nèi)的不帶 profile 的配置文件。
14. Springboot 日志關(guān)系
SpringBoot 默認(rèn)使用的 slf4j+logback 。引入 logging-starter 就可以使用。能自動(dòng)適配其他日志。只需要將日志里面的 commons-logging 移除。就會(huì)自動(dòng)引入其他日志。
使用 LoggerFactory 可以獲得 logger 。通過 logger 就可以記錄日志。
日志的一些配置
logging.level.com.atguigu=trace 指定打印級(jí)別
logging.file=G:/springboot.log 指定日志生成路徑
logging.path=/spring/log 指定日志生成相對(duì)路徑
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n 指定控制臺(tái)輸出格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== 指定文件中日志輸出格式
15. SpringBoot 如何擴(kuò)展 SpringMVC 的配置
通過建立自己的類繼承 WebMvcConfigurerAdapter ,在類上面打上注解 @Configuration 。然后重寫里面的方法即可。容器中的所有的 WebMvcConfigurer 會(huì)一起起作用。

如果我們不想使用 mvc 的自動(dòng)配置,全部使用自己的??梢栽谂渲妙惿显黾幼⒔?@EnableWebMvc 。這個(gè)注解可以導(dǎo)入一個(gè) webmvcconfigurationsupport 的類。然后 mvc 的自動(dòng)配置類上的注解有這么一句話,有一個(gè)條件注解,當(dāng)沒有上面那個(gè)類的時(shí)候,才生效。
16. SpringBoot 如何注冊(cè) filter , servlet , listener
編寫好一個(gè) servlet 后,聲明一個(gè)類,返回 ServletRegistrationBean 。通過里面的方法將 servlet 包裝一下返回。


編寫一個(gè) filter 。通過 FilterRegister 包裝。


編寫一個(gè) listener ,實(shí)現(xiàn)注冊(cè) bean 。


17. SpringBoot 切換成 undertow
先排除掉 tomcat ,然后再引入 undertow 就行了。

18. SpringBoot 的任務(wù)
異步任務(wù)在啟動(dòng)類上,增加注解 @EnableAsync ,此時(shí)就開啟了。然后對(duì)于異步的方法,打上注解 @Async 。
定時(shí)任務(wù),在啟動(dòng)類上,打上注解 @EnableScheduling ,需要定時(shí)的方法使用 @Scheduled 注解。這里面分為秒,分,小時(shí),日期,月份,星期。

郵件任務(wù)
引入郵件任務(wù)啟動(dòng)器。在配置文件中進(jìn)行配置。通過 javamailsenderimpl 來發(fā)送??梢园l(fā)送簡單的郵件和復(fù)雜的郵件 SimpleMailMessage 和 MimeMessage 。
19. SpringBoot 熱部署
jrebal 是收費(fèi)的。
一般使用 springboot-dev-tool 。通過 ctrl+f9 進(jìn)行熱部署。開啟 idea 的自動(dòng)編譯。
20. SpringBoot 的監(jiān)控
引入 actuatro 的監(jiān)控器。配置文件需要配置安全關(guān)閉。 management.security.enabled=false 。可以配置 endpoint 的 shutdown 的 enable 開啟,就可以直接關(guān)閉了。
21. SpringBoot 整合 redis
引入 redis 的啟動(dòng)器。 data-redis 。引入后再配置文件進(jìn)行配置 redis 的 host 。然后通過 redistemplate 就可以進(jìn)行操作了。會(huì)亂碼,默認(rèn)使用的是 jdk 的序列化 json 器。需要改成 jackson 。自己實(shí)現(xiàn)一個(gè) RedisTmeplate 。泛型為 object , object 。再實(shí)現(xiàn) CacheManager 。就會(huì)發(fā)現(xiàn)緩存變成 json 形式了。

到此這篇關(guān)于一文帶你輕松應(yīng)對(duì)Springboot面試小結(jié)的文章就介紹到這了,更多相關(guān)Springboot面試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
這篇文章主要介紹了35道SpringBoot面試題及答案(小結(jié))的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-21- 這篇文章主要介紹了Spring Boot 面試的一些知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-04-15


