SpringBoot怎么自定义一个Starter?
admin
2024-02-10 22:53:34
0

转自:

SpringBoot怎么自定义一个Starter?

下文笔者讲述SpringBoot自定义一个starter功能简介说明,如下所示

SpringBoot starter简介

Starter是Spring Boot中的一个非常重要的概念
Starter相当于模块它能将模块所需的依赖整合起来并对模块内的Bean根据环境(条件)进行自动配置使用者只需要依赖相应功能的Starter无需做过多的配置和依赖Spring Boot就能自动扫描并加载相应的模块SpringBootStarter功能总结:整合这个模块需要的依赖库提供对模块的配置项给使用者并可以对配置项提供默认值使得使用者可以不指定配置时提供默认配置项值也可以根据需要指定配置项值 提供自动配置类对模块内的Bean进行自动装配
例:在Maven的pom.xml中加入spring-boot-starter-web后,项目就可支持Spring MVC

例:

建立用户发送消息的服务如:email,飞书发送信息
starter创建为starter取名 {xxxx}-spring-boot-starter如mybatis-spring-boot-starter 
本篇测试信息,我们使用 message-spring-boot-starter第一步:自定义配置信息类--获取yml中的配置信息@ConfigurationProperties(prefix = "message")
@Data
public class MessageProperties {/*** 邮箱消息*/private MessageConfigInfo email = new MessageConfigInfo();/*** 飞书消息*/private MessageConfigInfo feishu = new MessageConfigInfo();@Datapublic static class MessageConfigInfo {/*** 用户名*/private String userName;/*** 密码*/private String passWord;/*** 秘钥*/private String key;/*** 消息发送API*/private String apiUrl;}
}---发送消息代码实现接口定义
public interface SendMessageService {Boolean sendMessage(String message);
}模拟接口实现
public class SendEmailMessageServiceImpl implements SendMessageService {private MessageProperties messageProperties;public SendEmailMessageServiceImpl(MessageProperties messageProperties) {this.messageProperties = messageProperties;}@Overridepublic 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;}@Overridepublic Boolean sendMessage(String message) {System.out.println(messageProperties.toString() + "发送邮件,发送内容为:" + message);return true;}
}自动配置类
@EnableConfigurationProperties(value = MessageProperties.class)
@Configuration
public class MessageAutoConfiguration {/*** 给发送邮件的实现类,注入配置信息* @param messageProperties* @return*/@Beanpublic SendEmailMessageServiceImpl emailMessageConfig(MessageProperties messageProperties){return new SendEmailMessageServiceImpl(messageProperties);}/*** 给发送飞书的实现类,注入配置信息* @param messageProperties* @return*/@Beanpublic SendFeishuMessageServiceImpl feishuMessageConfig(MessageProperties messageProperties){return new SendFeishuMessageServiceImpl(messageProperties);}
}新建spring.factories文件,并放入位置 resources/META-INF目录下 (如果没有spring.factories文件,需手动新建)org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.java265.message.config.MessageAutoConfiguration编写完之后,mvn install即可
使用starter
1.引入 自定义starter的坐标com.java265message-spring-boot-starter0.0.1-SNAPSHOT配置文件中配置相关的信息
message:email:username: Adealpassword: 123456key: 8784545454454api-url: http://java265.comfeishu:user-name: Adealpass-word: 123456key: 8784545454454api-url: http://java265.com--测试
@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!,发送一封邮件 java265.com \n\n");SendFeishuMessageServiceImpl feishuMessageService = context.getBean(SendFeishuMessageServiceImpl.class);feishuMessageService.sendMessage("你好,Starter!,发送一封飞书信息");}
}

相关内容

热门资讯

陕西农信陈仓联社:深耕本土惠民... 为持续优化辖区支付服务生态,完善本地便民消费场景,切实解决商户经营收款痛点、提升群众消费支付体验,陈...
又一家公司AI优先,裁员20%... 多知5月9日消息,美国科技企业 Cloudflare 周四在2026年Q1分析师电话会议上宣布裁员 ...
钟可祥任厦门钨业董事长 天眼查App显示,近日,厦门钨业(600549)发生工商变更,黄长庚卸任法定代表人、董事长,由钟可祥...
南昌第五医院甲状腺科江辉:甲状... 请教一下,我已在一侧甲状腺切除手术后过去了半个月,如今是否可以适量食用海参、鱼、虾、蟹? 答:鉴于甲...
原创 今... 5月9日这波金价,得跟大伙唠唠,放在近15年行情里算少见,以前2011年欧债危机、2020年全球避险...
华芢生物港股上市后首份年报:暂... 3月30日,华芢生物科技(青岛)股份有限公司发布了自2025年12月登陆港交所以来的第一份年度业绩报...
侃财邦|“双豆CP”,老少皆宜... 提到手作消费,你想到的还是商场里供儿童娱乐的石膏娃娃、沙画?如今,拼豆、豆荚娃娃这对“双豆CP”,已...
中外专家热议将海南自贸港打造成... 2026年5月8日下午,由中国日报社、中国(海南)改革发展研究院联合主办的2026 RCEP区域发展...
原创 割... 现在的消费市场,总有层出不穷的新噱头,专门瞄准年轻人的钱包。你有没有发现,最近不管是写字楼的茶水间,...
阿里 京东 字节三大互联网巨头... 在数字经济深度渗透的当下,互联网企业与物流供应链的融合已成为驱动行业高质量发展的核心引擎,二者的协同...
2026年5月更新:上海高价红... 在高端消费与资产配置领域,红酒,尤其是名庄酒,早已超越了单纯的饮品范畴,成为一种具有收藏价值与**属...
2000-2023年上市公司融... 上市公司融资结构是指企业在筹集资金时,不同融资方式的构成及其比例关系。这通常涵盖内源融资与外源融资两...
苏州银行:不断调优信贷结构 争... 来源:上海证券报·中国证券网 上证报中国证券网讯 苏州银行5月8日晚间发布最新的机构调研纪要。该行今...
黄红日就任民生银行首席合规官 上证报中国证券网讯(记者 张琼斯)民生银行5月8日发布的关于首席合规官任职资格获国家金融监督管理总局...
文化和旅游部公布2026年第二...   原标题:旅游市场强制消费问题典型案例(2026年第二批)   “纠治旅游行业导游乱象、强制消费等...
7室5厅6卫,恒大原总裁豪宅被... 近日,广州市天河区清风南街11号的一套428平方米复式楼,被广州天河区人民法院在阿里法拍网挂拍,起拍...
原创 6... 俄罗斯于5月9日在莫斯科红场举行的反法西斯战争胜利81周年阅兵仪式吸引了全球的目光。这不仅仅是一场军...
庆祝5·12国际护士节系列活动... 新闻 为庆祝5·12国际护士节,我院护理部组织各专业护理骨干开展系列护理健康科普义诊活动。 庆祝护士...
合肥贵金属回收商家深度测评:资... 一、行业背景与测评方法论 据《2025年中国二手奢侈品及贵金属回收市场白皮书》数据显示,2025年全...
2026国内正规现货黄金交易平... 步入2026年第二季度,全球货币政策的转向与地缘经济的重构,使得现货黄金的避险属性再度成为财富管理的...