springboot中编写starter.jar包
1、官方版和第三方版
spring-boot-starter-XXX官方
XXX-spring-boot-starter第三方
2、编写好接口,实现类、配置类、配置加载类
这里以digest的加密为例
接口
public interface Digest {
public String digest(String raw);
}
实现类
public class ShaDigest implements Digest {
@Override
public String digest(String raw) {//
System.out.println("使用sha256加密");
return DigestUtils.sha256Hex(raw);
}
}
public class MD5Digest implements Digest {
@Override
public String digest(String raw) {//传入原始数据,返回加密数据
System.out.println("使用md5加密");
return DigestUtils.md5Hex(raw);
}
}
配置类
@Component
@ConfigurationProperties(prefix = "digest")//配置项
public class Settings {
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
private String type;
}
配置加载类
@Configuration
@EnableConfigurationProperties(Settings.class)//加载指定的配置类
public class Config {
@Bean
@ConditionalOnProperty(prefix = "digest" ,name = "type",havingValue = "md5")//按条件加载
public Digest md5Digest(){
System.out.println("md5Digest");
return new MD5Digest();
}
@Bean
@ConditionalOnProperty(prefix = "digest" ,name = "type",havingValue = "sha")//按条件加载
public Digest shaDigest(){
System.out.println("shaDigest");
return new ShaDigest();
}
}
在application.properties中配置,
digest.type=sha
从死代码变活代码
通过在resources下META-INF配置spring.factories自动装载配置类的路径
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.digestspringbootstarter.config.Config
打包二次加工的jar包作为starter是不能识别的,把pom文件的maven-plugins删掉
用maven向本地仓库发布starter
在别的项目中引用发布项目内引用刚打包的starter
配置properties文件
digest.type=sha
测试
@SpringBootTest
public class DigestTest {
@Resource
private Digest digest;
@Test
public void testDigest(){
System.out.println(digest.digest("nihao!"));
}
}
这样做的好处,顺带着把依赖一起引入进来了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2022-07-14 leetcode.896. 单调数列
2022-07-14 leetcode.551. 学生出勤记录 I
2022-07-14 leetcode.589. N 叉树的前序遍历
2022-07-14 leetcode.590. N 叉树的后序遍历
2022-07-14 leetcode.914. 卡牌分组
2022-07-14 leetcode.412. Fizz Buzz
2022-07-14 leetcode.485. 最大连续 1 的个数