范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot怎么自定义一个Starter?

  需求
  在一个项目中,用户需要发送消息,可以通过邮件,QQ,微信,钉钉,飞书等,目前这些发送消息的方式都已经提供了公开的API,想要实现在项目中通过简单的配置各个发发送方的发送方信息,然后直接调用发送的API,发送信息即可,下面举个:
  配置 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);     }
  效果的就是以上这样,只要通过配置需要发送消息的配置,自动注入发送消息的API,就可以实现发送消息了,以下是实现过程。 starter创建
  第一步,需要为你的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;         /**          * 消息发送API          */         private String apiUrl;     } } 发送消息的实现
  由于需要通过这个starter实现发送消息,所以这里可能得要引入发送邮件,发送飞书的官方API,这里就不搞这么复杂了,主要还是看过程,自定义一个接口模拟一下即可。
  模拟接口定义 public interface SendMessageService {     Boolean sendMessage(String message); }
  模拟接口实现 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() + "  开发发送邮件,发送内容为:" + 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() + "  开发发送邮件,发送内容为:" + message);         return true;     } } 自动配置类@EnableConfigurationProperties(value = MessageProperties.class) @Configuration public class MessageAutoConfiguration {     /**      * 给发送邮件的实现类,注入配置信息      * @param messageProperties      * @return      */     @Bean     public SendEmailMessageServiceImpl emailMessageConfig(MessageProperties messageProperties){         return new SendEmailMessageServiceImpl(messageProperties);     }       /**      * 给发送飞书的实现类,注入配置信息      * @param messageProperties      * @return      */     @Bean     public SendFeishuMessageServiceImpl feishuMessageConfig(MessageProperties messageProperties){         return new SendFeishuMessageServiceImpl(messageProperties);     } } spring.factoriesorg.springframework.boot.autoconfigure.EnableAutoConfiguration=run.qiyuan.message.config.MessageAutoConfiguration 项目结构
  编写完之后, mvn install  即可。如何使用该starter
  在我们的项目中,引入自定义starter的坐标                      run.qiyuan             message-spring-boot-starter             0.0.1-SNAPSHOT         
  然后在配置文件中配置相关的信息 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!,这是一封邮件信息!  ");         SendFeishuMessageServiceImpl feishuMessageService = context.getBean(SendFeishuMessageServiceImpl.class);         feishuMessageService.sendMessage("你好,Starter!,这是一封飞书信息!");     } }
  原文链接:https://www.cnblogs.com/onecoder/p/16894269.html

创业者一定要开启的南疆自驾,遇见未知的自己过去一两年时间,大家都过得非常艰难。疫情横行,大环境萧条,经济下行,消费降级。几乎每位创业者都经历了至暗时刻而随着疫情的结束,也再次让创业者们看到了希望!2023年的春天就让我们一全年吸金超三千亿!国家级专精特新小巨人发展报告(2022年)出炉引导中小企业走专精特新发展道路是巩固壮大实体经济的重要举措。近年来,我国大力推进中小企业特别是专精特新企业培育,从中央到地方,全局部署靶向发力,作出一系列重要举措。工信部此前数据显6G卷轴屏液冷手机今年的MWC上,5G已经不是主角没错!三年,我们终于又回到了西班牙,回到了巴塞罗那,回到了MWC(世界移动通讯大会)。这不,得知今年有机会现场参加,托尼这家伙兴奋的很,二话不说拉上差评君就办了签证订了机票。一路上刚刚!雷军官宣小米手机,进入300W秒充时代!提到快充,大家的第一印象是什么?黑马满脑子都是OPPO的那句魔性广告词充电5分钟,通话2小时。而现在,红米又要用最新的快充技术改写这句话了。今日,红米发布了300W有线快充技术,令等等党又赢了,小米11ultra升级MIUI14系统,才知道什么叫流畅好内容我来评我想很多人对于手机能不能继续使用有一个最重要的判别标准就是流畅度吧,如果手机足够流畅那么使用起来自然是没啥压力,就可以继续使用了。但如果手机打开APP都卡顿,开不了几个岳飞牺牲之后,秦桧依然身居高位享尽荣华富贵,他是怎么去世的?赵沟宋高宗和丞相秦桧相互勾结。杀了岳飞后,他们仍然固执己见,把岳飞的妻子李氏和他的四个儿子(长子岳云被杀)送到岭南。之前,秦桧把岳飞骗进大理寺(刑事部)监狱后,秦的妻子王氏看到丈夫不一样的女子从封建贵族女子到艳名远播的娼妇於乙宇同,是她自己取的名字,意思是与男人苟同。如此大胆露骨的女子却偏偏生活在礼教严苛的李氏朝鲜,她这样的放浪形骸带给自己的是灭顶之灾。她本为朴氏,出身书香门第,自己也是满腹才华,嫁吴淞口连接长江吴淞江,汇入东海春天里,给自己一个约定,让情绪饱满,收拾行囊,跟上出发的节奏。上海宝山区,是一个有着悠久历史和人文底蕴的辖区,在这里发生的一二八淞沪战役和八一三淞沪会战展示了上海人民保家卫国的不屈邓稼先每一个中国人都要感谢他,因为他叫邓稼先,有人说大海正是因为把自己放在了世界的最低点,所以才拥有了托起整个世界的重量,著名核物理学家两弹元勋邓稼先就是大海,隐性埋名28年呕心沥血支撑马上评单车坟场频现,谁为巨大浪费买单?日前有石家庄本地博主爆料,市郊再添一处规模庞大的单车坟场。密密麻麻的单车电单车排列在一起被闲置浪费,大都成色较新,场面十分壮观,令人惋惜。单车坟场何以形成?据了解,经过285轮激烈2023MWC华为中兴非常强势,美媒果然坐不住了美媒不得不服,华为这次非常强势。最近,美联社观察到一个重要现象,在巴塞罗那举办的世界移动通信大会上,共有2000家参展商和赞助商,其中150家都是来自中国。特别是华为非常有存在感,
今天,在东湖追光以下内容来自武汉东湖光,千变万化,是大自然的魔法师。熹微的晨光,明媚的日光,温柔的湖光,灿烂的霓虹光东湖的光无处不在,有了光,万物都变得美妙起来。光所照之地,人就有力量,趁着天光正安阳两家5A景区对全国游客免门票河南日报客户端记者杨之甜12月26日,记者从相关部门获悉,为提振市场信心和活力,从2022年12月16日到2023年1月6日,安阳市殷墟景区林州市太行大峡谷景区对全国游客出台免门票海口市民游客海边享暖阳观落日来源中国新闻网12月23日,市民游客在海口湾观赏落日美景。凌楠摄12月23日,市民游客在海口湾观赏落日美景。凌楠摄12月23日,市民游客在海口湾观赏落日美景。凌楠摄12月23日,市公园融城美丽龙岗原标题大美中国公园融城美丽龙岗一群鹭鸟飞临位于深圳龙岗区龙城街道的大运中心湖畔。周洋摄龙岗区客家民俗博物馆设址于现存最大的客家围屋之一的鹤湖新居。郭保全摄龙岗永胜堂舞麒麟国家级非遗中国四大古城(一)四川阆中古城中国四大古城是指四川阆中古城云南丽江古城山西平遥古城和安徽徽州古城,全部四篇文章2020年首发于老飞摄影微信公众号。阆中古城全景,2019年11月17日拍摄,由58张照片拼接而成阆好香好甜!蔡甸第一波草莓上市,超详采摘攻略来了一年将尽,香香甜甜的草莓季也不期而至。超市里水果店里,草莓被摆上了最佳的展示位置,鲜亮红润的色泽吸引着每个过往行人的目光。想吃草莓心,被撩拨的蠢蠢欲动。别着急,蔡甸采摘草莓的位置和咬定青山不放松时间在流光中飞奔而去,新年又在悄悄地临近。蓦然回首,我在木王已工作两年了。这两年,是不同寻常的两年,木王也是不同一般的木王。鹰嘴峰风景两年来,疫情不时袭来已成常态,商洛地区严控的防我们去莲青山揽胜探秘迷失的王陵皇城前世与今生当您放空各种杂念,静心感悟万古青山,体味天地奇莲。在这雄犷的山峦之间,山东省滕州市莲青山因山高石怪而得势,因水而得灵,以它特有的清雅灵秀悠久的历史文化美丽动人的传说故事,加上现代完铁轨上的慢旅行2023年,10条全新火车之旅,带你游遍世界!火车旅行近年来已经越来越成为一种时尚,随着铁轨轻晃的节奏慢旅行,一路都是风景。2023年,世界各国又纷纷开通了全新的火车旅游线路,每一条都能带你前往迷人目的地。接下来我们就盘点一下船靠梅西老家罗萨里奥经过三十四小时的航行,深入南美大陆几百公里,我们终于成功挂靠梅西的出生地,阿根廷第二大城市罗萨里奥,从拉普拉塔河口上引水,经过十几个小时航行,河道尽头转入普拉那河,就正式进入阿根廷首届敦煌文博会散忆华夏文明八千年,丝绸之路三千里。这是对甘肃历史与文化的高度概括和生动写照。公元609年,在甘肃河西走廊的焉支山下,一场万国博览会盛大举行。如今,国家把丝绸之路(敦煌)国际文化博览会