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!"));
}
}
这样做的好处,顺带着把依赖一起引入进来了。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号