SpringBoot源碼 - 自定義starter

starter是 springboot的翅膀渡嚣,插上翅膀,就能飛得很高~

想飛的同學绝葡,跟著我腹鹉,一步步 diy自己的 starter~

1.創(chuàng)建pom項目

創(chuàng)建一個pom項目,命名為 sayhello-spring-boot-starter功咒,引入兩個依賴,如圖:

創(chuàng)建pom項目.png

2. 創(chuàng)建 bean

SayHello.java

package bean;

public class SayHello {
    // 只有一個屬性
    private String name;
    
    public void setName(String name){
        this.name = name;
    }
    // 最后輸出的信息
    public String getMsg(){
        return name + "say hello~~";
    }
}

3. 創(chuàng)建properties類

SayHelloProperties.java

package properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
// 讀取配置文件中 hello:name 的配置
@ConfigurationProperties(prefix = "hello")
public class SayHelloProperties {

    private String name;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

4. 創(chuàng)建自動配置類

MyAutoConfiguration.java

@Configuration
@ConditionalOnClass(SayHello.class)
@EnableConfigurationProperties(SayHelloProperties.class)
public class MyAutoConfiguration {

    @Autowired
    SayHelloProperties sayHelloProperties;

    @Bean
    @ConditionalOnMissingBean(SayHello.class)
    public SayHello getSayHiService(){
        SayHello sayHello = new SayHello();
        // 從配置文件里獲取name, sayHello 這個bean初始化完成
        sayHello.setName(sayHelloProperties.getName());
        return sayHello;
    }
}

看過自動配置原理的那一章的話,這個代碼看起來就很簡單咯~

5. 創(chuàng)建 spring.factories

在 resources/META-INF 目錄下章办,創(chuàng)建 spring.factories 文件滨彻,內容為自動配置類

spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration= MyAutoConfiguration

項目啟動,就可以自動裝配 MyAutoConfiguration

項目的整體結構如下:

項目結構.png

6. Maven 打包項目

通過命令 mvn clean install 打包項目休偶,得到jar包 sayhello-spring-boot-starter-1.0-SNAPSHOT.jar

接下來可以把jar包上傳到maven私服中辜羊,也可以通過導入的方式導入到另一個項目中使用,這里使用后者碱妆。在另一個項目中操作:

導入jar包.png

7. 配置 hello:name 值

server:
  port: 9000

hello:
  name: wangdaye-

8. 創(chuàng)建測試 controller

TestController.java

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    SayHello sayHello;

    @GetMapping("/hello")
    public String hello(){
        return sayHello.getMsg();
    }
}

瀏覽器訪問 localhost:9000/test/hello

測試輸出.png

王大爺跟你打了聲招呼疹尾,看到沒~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窍蓝,隨后出現的幾起案子繁成,更是在濱河造成了極大的恐慌,老刑警劉巖巾腕,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尊搬,死亡現場離奇詭異,居然都是意外死亡毁嗦,警方通過查閱死者的電腦和手機回铛,發(fā)現死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門哟旗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衔瓮,“玉大人五慈,你說我怎么就攤上這事胳嘲∧裾伲” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵欧募,是天一觀的道長仆抵。 經常有香客問我,道長舔糖,這世上最難降的妖魔是什么莺匠? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮辽聊,結果婚禮上,老公的妹妹穿的比我還像新娘跟匆。我一直安慰自己,他們只是感情好烤蜕,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布迹冤。 她就那樣靜靜地躺著,像睡著了一般橱鹏。 火紅的嫁衣襯著肌膚如雪堪藐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天糖荒,我揣著相機與錄音模捂,去河邊找鬼。 笑死狂男,一個胖子當著我的面吹牛,可吹牛的內容都是我干的并淋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼句喷,長吁一口氣:“原來是場噩夢啊……” “哼兔毙!你這毒婦竟也來了?” 一聲冷哼從身側響起锡溯,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芜茵,沒想到半個月后倡蝙,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡猪钮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年胆建,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扑馁。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡凉驻,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情市栗,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布蛛淋,位于F島的核電站篡腌,受9級特大地震影響,放射性物質發(fā)生泄漏嘹悼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一其监、第九天 我趴在偏房一處隱蔽的房頂上張望限匣。 院中可真熱鬧,春花似錦、人聲如沸锌历。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怔揩。三九已至,卻和暖如春商膊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晕拆。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工实幕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昆庇。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓整吆,卻偏偏與公主長得像拱撵,于是被迫代替她去往敵國和親表蝙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容