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!"));
}
}

这样做的好处,顺带着把依赖一起引入进来了。

posted @   开源遗迹  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 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 的个数
点击右上角即可分享
微信分享提示