日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot之如何自定义一个starter模块

發布時間:2023/12/20 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot之如何自定义一个starter模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

前面我們說到了在SpringBoot中自定義Enable模塊,那么如何在SpringBoot中如何自定義一個Starter模塊呢?要想自定義一個Starter模塊,就需要理解自動裝配的原理。
首先,想想我們自動裝配涉及到哪些關鍵的類或者屬性文件?無非就是配置類+spring.factories屬性文件。

自定義starter的條件

  • 根據條件檢查classpath下對應的類,也就是說需要提供對應可檢查的類。
  • 當滿足條件時能夠生成自定義的Bean,并注冊到容器中去。
  • 能夠自動配置項目所需要的配置。
  • 開始實施

    第一步:定義好需要通過配置類來實例化的Bean

    public class MsgService {private String url;private String content;public MsgService(String url, String content) {this.url = url;this.content = content;}public String sendMsg() {System.out.println("**********消息發送成功,地址=" + url + ",內容=" + content + "");return "消息發送成功,地址=" + url + ",內容=" + content + "";}}

    這里定義的bean沒啥好說的。

    第二步: 定義好屬性類

    @ConfigurationProperties(prefix = "msg") public class MsgProperties {/*** 消息發送地址*/private String url;/*** 發送內容*/private String content;//get,set方法省略

    這里通過@ConfigurationProperties注解將配置文件的前綴為msg的配置信息與自身的屬性綁定,所有在配置文件中能配置的屬性都在MsgProperties類中封裝著,配置文件能配置什么只需要看這個屬性類的屬性。

    第二步:定義好配置類

    @Configuration @ConditionalOnClass(MsgService.class) @EnableConfigurationProperties(MsgProperties.class) public class MsgConfiguration {/*** 注入屬性類*/@Autowiredprivate MsgProperties msgProperties;@Bean@ConditionalOnMissingBean({MsgService.class})public MsgService msgService() {return new MsgService(msgProperties.getUrl(), msgProperties.getContent());} }

    @Bean注解表明該方法實例化的對象會被加載到容器當中;
    @ConditionalOnMissingBean注解指明當容器中不存在MsgService的對象時再進行實例化;@EnableConfigurationProperties注解是使MsgProperties生效,也就是將MsgProperties類注入到IOC容器中。
    @ConditionalOnClass 注解表明只有classpath下能找到MsgService類時才會構建這個Bean。

    第三步:定義好spring.factories屬性文件

    要想實現自動配置,那么spring.factories屬性文件是必不可少的,因為SpringBoot需要通過spring.factories找到需要實例化的配置類。然后通過SPI的方式來實例化。
    所以,我們需要在resources 下面增加 META-INF/spring.factories

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.jay.config.MsgConfiguration

    打包上傳到本地倉庫

    上面的步驟都搞好之后,我們這個自定義的starter模塊差不多就可以用了,為了上其他項目可以引入我們的自定義的starter模塊,我們需要通過mvn install命令將這個starter包上傳到我們本地倉庫或者私服。

    其他項目引入我們自定義的starter模塊

    1. 引入依賴

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency> <!--自定義的starter--><dependency><groupId>com.jay</groupId><artifactId>springboot-custom-starter2</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

    2. 在application.properties文件中增加配置

    msg.url=127.0.0.1 msg.content=nice to meet you

    3.測試

    @RestController public class HelloWorldController {@Autowiredprivate MsgService msgService;@RequestMapping(value = "/testSendMsg")public String testSendMsg() {String sendMsg = msgService.sendMsg();return sendMsg;} }

    啟動項目,訪問接口,結果如下:

    總結

    本文完整的演示了一遍如何自定義starter模塊。其實理解了自動裝配的原理就很好的能自定義一個starter模塊。它的工作流程無非就三步:

  • Spring Boot在啟動時會掃描項目所依賴的JAR包,尋找包含spring.factories屬性文件的JAR包。
  • 根據spring.factories配置加載EnableAutoConfiguration。
  • 根據@Conditional注解的條件,進行自動配置并將Bean注入到Spring容器。
    希望對讀者朋友們有所幫助。
  • 參考

    SpringBoot自定義starter及自動配置

    源碼下載

    源碼下載

    總結

    以上是生活随笔為你收集整理的SpringBoot之如何自定义一个starter模块的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。