首页IT科技springboot 自定义start(SpringBoot怎么自定义一个Starter ?)

springboot 自定义start(SpringBoot怎么自定义一个Starter ?)

时间2025-09-20 00:15:44分类IT科技浏览4927
导读:小伙伴们曾经可能都经历过整天写着CURD的业务,都没写过一些组件相关的东西,这篇文章记录一下SpringBoot如何自定义一个Starter。 原理和理论就不用多说了,可以在网上找到很多关于该方面的资料,这里主要分享如何自定义。...

小伙伴们曾经可能都经历过整天写着CURD的业务                 ,都没写过一些组件相关的东西                         ,这篇文章记录一下SpringBoot如何自定义一个Starter                 。

原理和理论就不用多说了         ,可以在网上找到很多关于该方面的资料                 ,这里主要分享如何自定义                          。

原文链接:SpringBoot怎么自定义一个Starter ?一只小Coder

需求

在一个项目中                         ,用户需要发送消息         ,可以通过邮件        ,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.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!                 ,这是一封飞书信息!"); } }

结果

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
midjourney手机版下载(midjourney 初级使用说明)