為了更好的理解 Spring Boot 的 自動(dòng)配置和工作原理,我們自己來實(shí)現(xiàn)一個(gè)簡單的自動(dòng)配置模塊。
假設(shè),現(xiàn)在項(xiàng)目需要一個(gè)功能,需要自動(dòng)記錄項(xiàng)目發(fā)布者的相關(guān)信息,我們?nèi)绾瓮ㄟ^ Spring Boot 的自動(dòng)配置坯癣,更好的實(shí)現(xiàn)功能呢蚜点?
實(shí)戰(zhàn)的開端 – Maven搭建
先創(chuàng)建一個(gè)Maven項(xiàng)目,我來手動(dòng)配置下 POM 文件绍绘。
參數(shù)的配置 - 屬性參數(shù)類
首先奶镶,我們定義一個(gè)自定義前綴,叫做 custom 吧陪拘。之前說到厂镇,這里的配置參數(shù),可以通過 application.properties 中直接設(shè)置左刽。那么捺信,我們創(chuàng)建一個(gè)作者的字段,設(shè)置默認(rèn)值為 LiangGzone欠痴。
那么迄靠,聰明的你,應(yīng)該想到了喇辽,我們?cè)?application.properties 中配置的時(shí)候掌挚,就要這樣配置了。
#custom
custom.author = James
真的很簡單 - 簡單的服務(wù)類
你沒有看錯(cuò)茵臭,真的是太簡單了疫诽,沒有高大上的復(fù)雜業(yè)務(wù)。它的主要用途就是賦值旦委。
自動(dòng)配置的核心 - 自動(dòng)配置類
@ConditionalOnClass奇徒,參數(shù)中對(duì)應(yīng)的類在 classpath 目錄下存在時(shí),才會(huì)去解析對(duì)應(yīng)的配置類缨硝。因此摩钙,我們需要配置 AuthorServer 。
@EnableConfigurationProperties查辩, 用來加載配置參數(shù)胖笛,所以它應(yīng)該就是屬性參數(shù)類
AuthorProperties。
authorResolver方法的作用宜岛,即 AuthorProperties 的參數(shù)賦值到AuthorServer 中长踊。
spring.factories 不要遺漏
我們需要實(shí)現(xiàn)自定義自動(dòng)裝配,就需要自定義 spring.factories 參數(shù)萍倡。所以身弊,我們需要在 src/main/resources/ META-INF/spring.factories 中配置信息,值得注意的是,這個(gè)文件要自己創(chuàng)建阱佛。
功能打包與配置依賴
好了帖汞,我們已經(jīng)實(shí)現(xiàn)了一個(gè)簡單的自動(dòng)配置功能。那么凑术,我們需要將這個(gè)項(xiàng)目打成 jar 包部署在我們的本地或者私服上翩蘸。然后,就可以用了淮逊。
我們?cè)诹硗庖粋€(gè)項(xiàng)目中催首,配置 Maven 依賴。
測(cè)試泄鹏,測(cè)試
運(yùn)行起來翅帜,我們看下打印的發(fā)布者信息是什么?
我們?cè)?application.properties 中配置一個(gè)信息命满。
#custom
custom.author = James
運(yùn)行起來涝滴,我們看下打印的發(fā)布者信息是什么?
在此我向大家推薦一個(gè)架構(gòu)學(xué)習(xí)交流群胶台。交流學(xué)習(xí)群號(hào):575745314 ? 里面會(huì)分享一些資深架構(gòu)師錄制的視頻錄像:有Spring歼疮,MyBatis,Netty源碼分析诈唬,高并發(fā)韩脏、高性能、分布式铸磅、微服務(wù)架構(gòu)的原理赡矢,JVM性能優(yōu)化、分布式架構(gòu)等這些成為架構(gòu)師必備的知識(shí)體系阅仔。還能領(lǐng)取免費(fèi)的學(xué)習(xí)資源吹散,目前受益良多
一、源碼分析
二八酒、分布式架構(gòu)
三空民、微服務(wù)
四、性能優(yōu)化
五羞迷、Java工程化