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 @ 2023-07-14 21:43  开源遗迹  阅读(117)  评论(0)    收藏  举报