转自:
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的坐标配置文件中配置相关的信息 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!,发送一封飞书信息");} } com.java265 message-spring-boot-starter 0.0.1-SNAPSHOT
上一篇:期待早日回归!刘礼嘉晒在马德里的训练照:远离伤病 心想事成 刘礼嘉复出 刘礼嘉啥时候归队
下一篇:《红毯先生》首映口碑出炉,讽刺性强但剪辑碎,被指不属于春节档 红毯先生首映礼后观众评价好看吗 红毯先生会是春节档黑马吗