欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解SpringBoot如何自定義一個Starter

 更新時間:2022年11月16日 08:22:14   作者:一只小coder  
小伙伴們曾經(jīng)可能都經(jīng)歷過整天寫著CURD的業(yè)務,都沒寫過一些組件相關的東西,這篇文章記錄一下SpringBoot如何自定義一個Starter。原理和理論就不用多說了,可以在網(wǎng)上找到很多關于該方面的資料,這里主要分享如何自定義

需求

在一個項目中,用戶需要發(fā)送消息,可以通過郵件,QQ,微信,釘釘,飛書等,目前這些發(fā)送消息的方式都已經(jīng)提供了公開的API,想要實現(xiàn)在項目中通過簡單的配置各個發(fā)發(fā)送方的發(fā)送方信息,然后直接調用發(fā)送的API,發(fā)送信息即可,下面舉個例子:

配置

message:
  email:
    username: Aden
    password: 123456
    key: HJFHADJSFBDASFHUADSINF
    api-url: http://blog.qiyuan.run
  feishu:
    user-name: Aden
    pass-word: 654321
    key: HFJKADSBFJKADSJFKADSNFAD
    api-url: http://blog.qiyuan.run

調用

    @Autowired
    SendEmailMessageServiceImpl emailMessageService;
    
    @Autowired
    SendFeishuMessageServiceImpl feishuMessageService;

    public boolean sendEmail(String msg) {
        return emailMessageService.sendMessage(msg);
    }
    
    public boolean sendFeishu(String msg){
        return feishuMessageService.sendMessage(msg);
    }

效果的就是以上這樣,只要通過配置需要發(fā)送消息的配置,自動注入發(fā)送消息的API,就可以實現(xiàn)發(fā)送消息了,以下是實現(xiàn)過程。

starter創(chuàng)建

第一步,需要為你的starter取一個響亮的名字,spring的官方文檔中說明,官方的 starter 的命名格式為 spring-boot-starter-{xxxx} 比如spring-boot-starter-activemq第三方我們自己的命名格式為 {xxxx}-spring-boot-starter。比如mybatis-spring-boot-starter,此處,我命名為message-spring-boot-starter

自定義配置信息類

因為要在項目中的配置文件中寫配置信息,所以在這個starter中,我們需要通過一個配置信息類來接收配置的信息。

@ConfigurationProperties(prefix = "message")
@Data
public class MessageProperties {
    /**
     * 郵箱消息
     */
    private MessageConfigInfo email = new MessageConfigInfo();
    /**
     * 飛書消息
     */
    private MessageConfigInfo feishu = new MessageConfigInfo();

    @Data
    public static class MessageConfigInfo {
        /**
         * 用戶名
         */
        private String userName;
        /**
         * 密碼
         */
        private String passWord;
        /**
         * 秘鑰
         */
        private String key;
        /**
         * 消息發(fā)送API
         */
        private String apiUrl;
    }
}

發(fā)送消息的實現(xiàn)

由于需要通過這個starter實現(xiàn)發(fā)送消息,所以這里可能得要引入發(fā)送郵件,發(fā)送飛書的官方API,這里就不搞這么復雜了,主要還是看過程,自定義一個接口模擬一下即可。

模擬接口定義

public interface SendMessageService {
    Boolean sendMessage(String message);
}

模擬接口實現(xiàn)

public class SendEmailMessageServiceImpl implements SendMessageService {

    private MessageProperties messageProperties;

    public SendEmailMessageServiceImpl(MessageProperties messageProperties) {
        this.messageProperties = messageProperties;
    }

    @Override
    public Boolean sendMessage(String message) {
        System.out.println(messageProperties.toString() + "  開發(fā)發(fā)送郵件,發(fā)送內容為:" + message);
        return true;
    }
}
public class SendFeishuMessageServiceImpl implements SendMessageService {

    private MessageProperties messageProperties;

    public SendFeishuMessageServiceImpl(MessageProperties messageProperties) {
        this.messageProperties = messageProperties;
    }

    @Override
    public Boolean sendMessage(String message) {
        System.out.println(messageProperties.toString() + "  開發(fā)發(fā)送郵件,發(fā)送內容為:" + message);
        return true;
    }
}

自動配置類

@EnableConfigurationProperties(value = MessageProperties.class)
@Configuration
public class MessageAutoConfiguration {
    /**
     * 給發(fā)送郵件的實現(xiàn)類,注入配置信息
     * @param messageProperties
     * @return
     */
    @Bean
    public SendEmailMessageServiceImpl emailMessageConfig(MessageProperties messageProperties){
        return new SendEmailMessageServiceImpl(messageProperties);
    }


    /**
     * 給發(fā)送飛書的實現(xiàn)類,注入配置信息
     * @param messageProperties
     * @return
     */
    @Bean
    public SendFeishuMessageServiceImpl feishuMessageConfig(MessageProperties messageProperties){
        return new SendFeishuMessageServiceImpl(messageProperties);
    }
}

spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=run.qiyuan.message.config.MessageAutoConfiguration

項目結構

編寫完之后,mvn install即可。

如何使用該starter

在我們的項目中,引入自定義starter的坐標

        <dependency>
            <groupId>run.qiyuan</groupId>
            <artifactId>message-spring-boot-starter</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

然后在配置文件中配置相關的信息

message:
  email:
    username: Aden
    password: 123456
    key: HJFHADJSFBDASFHUADSINF
    api-url: http://blog.qiyuan.run
  feishu:
    user-name: Aden
    pass-word: 654321
    key: HFJKADSBFJKADSJFKADSNFAD
    api-url: http://blog.qiyuan.run

測試

@SpringBootApplication
public class TeachApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(TeachApplication.class, args);
        SendEmailMessageServiceImpl emailMessageService = context.getBean(SendEmailMessageServiceImpl.class);
        emailMessageService.sendMessage("你好,Starter!,這是一封郵件信息!\n\n");
        SendFeishuMessageServiceImpl feishuMessageService = context.getBean(SendFeishuMessageServiceImpl.class);
        feishuMessageService.sendMessage("你好,Starter!,這是一封飛書信息!");
    }
}

以上就是詳解SpringBoot如何自定義一個Starter的詳細內容,更多關于SpringBoot自定義Starter的資料請關注腳本之家其它相關文章!

相關文章

  • 對ArrayList和LinkedList底層實現(xiàn)原理詳解

    對ArrayList和LinkedList底層實現(xiàn)原理詳解

    今天小編就為大家分享一篇對ArrayList和LinkedList底層實現(xiàn)原理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用javaMail實現(xiàn)發(fā)送郵件

    使用javaMail實現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細介紹了使用javaMail實現(xiàn)發(fā)送郵件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • MybatisPlus?QueryWrapper常用方法實例

    MybatisPlus?QueryWrapper常用方法實例

    MyBatis-Plus(opens new window)是一個MyBatis(opens new window)的增強工具,在 MyBatis的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關于MybatisPlus?QueryWrapper常用方法的相關資料,需要的朋友可以參考下
    2022-04-04
  • 詳細分析Java并發(fā)集合ArrayBlockingQueue的用法

    詳細分析Java并發(fā)集合ArrayBlockingQueue的用法

    這篇文章主要介紹了詳細分析Java并發(fā)集合ArrayBlockingQueue的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java中Aspose組件進行多文檔間的轉換方法總結

    Java中Aspose組件進行多文檔間的轉換方法總結

    在本篇文章里我們給大家分享了關于Java中Aspose組件進行多文檔間的轉換方法內容,需要的朋友們學習下吧。
    2019-02-02
  • java應用開發(fā)之JVM運行時內存分析

    java應用開發(fā)之JVM運行時內存分析

    這篇文章主要介紹了java應用開發(fā)之JVM運行時內存,文中附含圖文示例內容分析非常簡要,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • 輕松掌握Java代理模式

    輕松掌握Java代理模式

    這篇文章主要幫助大家輕松掌握Java代理模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • springboot如何獲取yml里面的屬性值

    springboot如何獲取yml里面的屬性值

    這篇文章主要介紹了springboot如何獲取yml里面的屬性值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • spring boot 1.5.4 集成shiro+cas,實現(xiàn)單點登錄和權限控制

    spring boot 1.5.4 集成shiro+cas,實現(xiàn)單點登錄和權限控制

    這篇文章主要介紹了spring boot 1.5.4 集成shiro+cas,實現(xiàn)單點登錄和權限控制,需要的朋友可以參考下
    2017-06-06
  • 詳細總結IDEA中打jar包的兩種方式

    詳細總結IDEA中打jar包的兩種方式

    發(fā)現(xiàn)有很多小伙伴都不會用IDEA打jar包,今天給大家詳細總結了兩種IDEA打jar包的方式,對正在學習IDEA使用的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05

最新評論