1. SpringBoot 簡介
SpringBoot 是簡化 Spring 應(yīng)用開發(fā)的一個框架屈嗤。他整合了 Spring 的技術(shù)棧潘拨,提供各種標(biāo)準(zhǔn)化的默認(rèn)配置。使得我們可以快速開發(fā) Spring 項目饶号,免掉 xml 配置的麻煩铁追。降低 Spring 項目的成本。
2. SpringBoot 的優(yōu)缺點
使編碼配置部署都變得很簡單茫船。缺點可能就是自動注入的 bean 琅束,不是特別清楚,有可能會沖突算谈。
3. SpringBoot 如何固定版本
一種是 parenet 的時候直接固定涩禀。
一種是通過 dependcy 來固定,因為可能當(dāng)前項目已經(jīng)有父項目濒生。
4. SpringBoot 的使用方式
maven 中父項目導(dǎo)入 Springboot 的啟動器埋泵。然后編寫一個主程序打上 SpringBootApplication 注解。通過 run 方法就可以啟動罪治。
5. SpringBoot 自動配置原理
首先可以看到啟動類上面有一個 SpringBootApplication 注解丽声,點進(jìn)去之后,又 EnableAutoConfiguration 注解觉义。然后再進(jìn)去雁社,發(fā)現(xiàn)有個 @Import 注解,其導(dǎo)入的是 EnableAutoConfigurationImportSelector 類晒骇。再看這個類霉撵,他是集成了一個抽象的 AutoConfigutationimportSelector 。再往上就是接口 ImportSelector 洪囤。然后如果實現(xiàn)了接口的 selectImport 接口就會將其中的返回的數(shù)組全部加載到 Spring 容器中徒坡。其中實現(xiàn)的最主要的地方是 getCandidateConfigurations 方法。那個方法內(nèi)部實現(xiàn)就是回去讀取 meta-inf 下的 spring.factories 瘤缩。所以主要在那里面配置的類就都會被自動加載喇完。
6. SpringBoot 配置文件注入
注入實體類中,實體類可以使用 @ConfigurationProperties(prefix = "person") 注解剥啤。
7. @Value 和 @ConfigurationProperties 比較
8.@PropertySource
加載指定的配置文件锦溪。如下,如果不聲明的話府怯,將從主配置文件加載刻诊。
9.@ImportResource
導(dǎo)入 Spring 的配置文件,讓配置文件里面的內(nèi)容生效牺丙;這種方式比如一個類沒有使用 @Componet 注解注冊進(jìn)容器则涯,則使用自動裝配 autowired 找不到。引入文件后,即可找到粟判。
Spring Boot 里面沒有 Spring 的配置文件肖揣,我們自己編寫的配置文件,也不能自動識別浮入;
想讓 Spring 的配置文件生效,加載進(jìn)來羊异; @ImportResource 標(biāo)注在一個配置類上
10. springboot 的 profile 加載
在配置文件的時候事秀,我們可以建立多個。用 - 進(jìn)行結(jié)尾野舶。通過主配置文件易迹,配置 profiles 的 active 就可以指定加載文件。
在同一個文件中平道, yml 文件支持文檔塊的寫法睹欲,為 --- 。
11. SpringBoot 激活指定 profile 的幾種方式
第一種:直接在配置文件中通過 active 指定
第二種:通過 java -jar 的參數(shù)指定
第三種:通過虛擬機(jī)參數(shù)
12. SpringBoot 項目內(nèi)部配置文件加載順序
順序如下一屋;
優(yōu)先級由高到底窘疮,高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置;
SpringBoot 會從這四個位置全部加載主配置文件冀墨; ** 互補(bǔ)配置 ** 闸衫;
我們還可以通過 spring.config.location 來改變默認(rèn)的配置文件位置
項目打包好以后,我們可以使用命令行參數(shù)的形式诽嘉,啟動項目的時候來指定配置文件的新位置蔚出;指定配置文件和默認(rèn)加載的這些配置文件共同起作用形成互補(bǔ)配置;
13. SpringBoot 外部配置文件加載順序
這個挺多的虫腋,我們就幾個重要的骄酗。
高優(yōu)先級的會覆蓋低優(yōu)先級的。
命令行上的參數(shù)配置是優(yōu)先級最高的悦冀。
jar 包外的帶 profile 的配置文件趋翻。
jar 包內(nèi)的帶 profile 的配置文件。
jar 包外的不帶 profile 的配置文件雏门。
jar 包內(nèi)的不帶 profile 的配置文件嘿歌。
14. Springboot 日志關(guān)系
SpringBoot 默認(rèn)使用的 slf4j+logback 。引入 logging-starter 就可以使用茁影。能自動適配其他日志宙帝。只需要將日志里面的 commons-logging 移除。就會自動引入其他日志募闲。
使用 LoggerFactory 可以獲得 logger 步脓。通過 logger 就可以記錄日志。
日志的一些配置
logging.level.com.atguigu=trace 指定打印級別
logging.file=G:/springboot.log 指定日志生成路徑
logging.path=/spring/log 指定日志生成相對路徑
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n 指定控制臺輸出格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== 指定文件中日志輸出格式
15. SpringBoot 如何擴(kuò)展 SpringMVC 的配置
通過建立自己的類繼承 WebMvcConfigurerAdapter ,在類上面打上注解 @Configuration 靴患。然后重寫里面的方法即可仍侥。容器中的所有的 WebMvcConfigurer 會一起起作用。
如果我們不想使用 mvc 的自動配置鸳君,全部使用自己的农渊。可以在配置類上增加注解 @EnableWebMvc 或颊。這個注解可以導(dǎo)入一個 webmvcconfigurationsupport 的類砸紊。然后 mvc 的自動配置類上的注解有這么一句話,有一個條件注解囱挑,當(dāng)沒有上面那個類的時候醉顽,才生效。
16. SpringBoot 如何注冊 filter 平挑, servlet 游添, listener
編寫好一個 servlet 后,聲明一個類通熄,返回 ServletRegistrationBean 唆涝。通過里面的方法將 servlet 包裝一下返回。
編寫一個 filter 棠隐。通過 FilterRegister 包裝石抡。
編寫一個 listener ,實現(xiàn)注冊 bean 助泽。
17. SpringBoot 切換成 undertow
先排除掉 tomcat 啰扛,然后再引入 undertow 就行了。
18. SpringBoot 的任務(wù)
異步任務(wù)在啟動類上嗡贺,增加注解 @EnableAsync 隐解,此時就開啟了。然后對于異步的方法诫睬,打上注解 @Async 煞茫。
定時任務(wù),在啟動類上摄凡,打上注解 @EnableScheduling 续徽,需要定時的方法使用 @Scheduled 注解。這里面分為秒亲澡,分钦扭,小時,日期床绪,月份客情,星期其弊。
郵件任務(wù)
引入郵件任務(wù)啟動器。在配置文件中進(jìn)行配置膀斋。通過 javamailsenderimpl 來發(fā)送梭伐。可以發(fā)送簡單的郵件和復(fù)雜的郵件 SimpleMailMessage 和 MimeMessage 仰担。
19. SpringBoot 熱部署
jrebal 是收費的糊识。
一般使用 springboot-dev-tool 。通過 ctrl+f9 進(jìn)行熱部署摔蓝。開啟 idea 的自動編譯技掏。
20. SpringBoot 的監(jiān)控
引入 actuatro 的監(jiān)控器。配置文件需要配置安全關(guān)閉项鬼。management.security.enabled=false 【⒀郑可以配置 endpoint 的 shutdown 的 enable 開啟绘盟,就可以直接關(guān)閉了。
21. SpringBoot 整合 redis
引入 redis 的啟動器悯仙。data-redis 龄毡。引入后再配置文件進(jìn)行配置 redis 的 host 。然后通過 redistemplate 就可以進(jìn)行操作了锡垄。會亂碼沦零,默認(rèn)使用的是 jdk 的序列化 json 器。需要改成 jackson 货岭。自己實現(xiàn)一個 RedisTmeplate 路操。泛型為 object , object 千贯。再實現(xiàn) CacheManager 屯仗。就會發(fā)現(xiàn)緩存變成 json 形式了。
如果喜歡本篇文章搔谴,就給小編點個贊吧魁袜,感謝支持~