javascript
阿里微服务专家自己手写Spring Boot 实现一个简单的自动配置模块
為了更好的理解 Spring Boot 的 自動(dòng)配置和工作原理,我們自己來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的自動(dòng)配置模塊。
假設(shè),現(xiàn)在項(xiàng)目需要一個(gè)功能,需要自動(dòng)記錄項(xiàng)目發(fā)布者的相關(guān)信息,我們?nèi)绾瓮ㄟ^(guò) Spring Boot 的自動(dòng)配置,更好的實(shí)現(xiàn)功能呢?
實(shí)戰(zhàn)的開(kāi)端 – Maven搭建
先創(chuàng)建一個(gè)Maven項(xiàng)目,我來(lái)手動(dòng)配置下 POM 文件。
參數(shù)的配置 - 屬性參數(shù)類(lèi)
首先,我們定義一個(gè)自定義前綴,叫做 custom 吧。之前說(shuō)到,這里的配置參數(shù),可以通過(guò) application.properties 中直接設(shè)置。那么,我們創(chuàng)建一個(gè)作者的字段,設(shè)置默認(rèn)值為 LiangGzone。
那么,聰明的你,應(yīng)該想到了,我們?cè)?application.properties 中配置的時(shí)候,就要這樣配置了。
custom custom.author = James真的很簡(jiǎn)單 - 簡(jiǎn)單的服務(wù)類(lèi)
你沒(méi)有看錯(cuò),真的是太簡(jiǎn)單了,沒(méi)有高大上的復(fù)雜業(yè)務(wù)。它的主要用途就是賦值。
自動(dòng)配置的核心 - 自動(dòng)配置類(lèi)
@ConditionalOnClass,參數(shù)中對(duì)應(yīng)的類(lèi)在 classpath 目錄下存在時(shí),才會(huì)去解析對(duì)應(yīng)的配置類(lèi)。因此,我們需要配置 AuthorServer 。
@EnableConfigurationProperties, 用來(lái)加載配置參數(shù),所以它應(yīng)該就是屬性參數(shù)類(lèi)
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)建。
功能打包與配置依賴(lài)
好了,我們已經(jīng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的自動(dòng)配置功能。那么,我們需要將這個(gè)項(xiàng)目打成 jar 包部署在我們的本地或者私服上。然后,就可以用了。
我們?cè)诹硗庖粋€(gè)項(xiàng)目中,配置 Maven 依賴(lài)。
測(cè)試,測(cè)試
運(yùn)行起來(lái),我們看下打印的發(fā)布者信息是什么?
我們?cè)?application.properties 中配置一個(gè)信息。
運(yùn)行起來(lái),我們看下打印的發(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工程化
總結(jié)
以上是生活随笔為你收集整理的阿里微服务专家自己手写Spring Boot 实现一个简单的自动配置模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 区块链随想:共识不等于信用
- 下一篇: 覆盖所有类型的javascript深度克