什么是SpringBoot?
SpringBoot 是一個為了簡化Java應(yīng)用環(huán)境搭建和開發(fā)過程的一個框架。它比較方便的就是自動配置,不需要XML配置,在主配置類上打一個@SpringBootApplication標(biāo)簽就可以實現(xiàn)自動配置许蓖。SpringBoot還簡化了Maven的配置,導(dǎo)入SpringBoot的starter架包就可以把對應(yīng)的依賴包都導(dǎo)入到項目中调衰,很方便膊爪,不用去考慮版本兼容。SpringBoot還內(nèi)嵌了tomcat嚎莉,可以以jar包的形式獨立運行米酬。它的缺點是,由于不用自己做配置趋箩,報錯的時候很難去定位赃额。
SpringBoot 自動配置原理?
SpringBoot 實現(xiàn)自動配置主要是依靠@SpringBootApplication這個注解叫确,在主配置類上打上@SpringBootApplication注解就能實現(xiàn)自動配置跳芳,這個注解里面主要包含了三個注解,分別是@SpringBootConfiguration標(biāo)明這個類是一個配置類竹勉、@EnableAutoConfiguration實現(xiàn)自動配置飞盆、@ComponentScan掃描組件。@EnableAutoConfiguration的底層使用了一個@Import注解次乓,引入了一個自動配置導(dǎo)入選擇器AutoConfigurationImportSelector吓歇,這個類里面有一個getCandidateConfigurations方法,獲取候選配置的方法票腰,他會去當(dāng)前類路徑下獲取autoconfiguration jar包下面的META-INF文件夾下面的Spring.factories文件并以一個List<String>返回(完成自動配置bean)城看,這里面放了大量的自動配置項。
SpringBoot 的核心文件有哪幾個杏慰?
application.yml(.properties)测柠、bootstrap.yml(.properties)
- 如配置中心config需要加載來自外部的配置信息是就要使用bootstrap.yml或.properties炼鞠,在文件中配置外部配置信息的連接。
- yml 格式不支持 @PropertySource 注解導(dǎo)入配置
SpringBoot 幾種運行方式鹃愤?
- 打包用命令行java -jar xxx.jar運行
- 用Maven插件運行
- 直接main方法運行
如何在 SpringBoot 啟動的時候運行一些特定的代碼簇搅?
實現(xiàn)接口ApplicationRunner或者CommandLineRunner完域,這兩個接口實現(xiàn)方式一樣软吐,它們都只提供了一個run方法。
如果啟動的時候有多個ApplicationRunner和CommandLineRunner吟税,想控制它們的啟動順序凹耙,可以實現(xiàn) org.springframework.core.ordered接口或者使用 org.springframework.core.annotation.order注解。
SpringBoot 有哪幾種讀取配置的方式肠仪?
- @value標(biāo)簽+el表達(dá)式
- @ConfigurationProperties標(biāo)簽
- @propertySource+@ConfigurationProperties
SpringBoot 支持哪些日志框架肖抱?推薦和默認(rèn)的日志框架是哪個?
Spring Boot支持Java Util Logging,Log4j2,Logback作為日志框架异旧,如果你使用starters啟動器意述,Spring Boot將使用Logback作為默認(rèn)日志框架。無論使用哪種日志框架吮蛹,Spring Boot都支持配置將日志輸出到控制臺或者文件中荤崇。
默認(rèn)使用Logback作為日志框架,往資源目錄下創(chuàng)建一個logback-spring.xml即可
SpringBoot 如何定義多套不同環(huán)境配置潮针?
SpringBoot 可以兼容老 Spring 項目嗎术荤,如何做?
可以兼容每篷,使用 @ImportResource 注解導(dǎo)入老 Spring 項目配置文件瓣戚。