如何定义一个自己的Starter

我们的Starer提供一个Service,包含一个能够将配置文件中配置的字符串根据传入的字符进行分割的方法String[] split(String separatorChar)。将配置文件中的字符串读入

public class StarterService {
    private String config;   
    public StarterService(String config) {
        this.config = config;
    }
    public String[] split(String separatorChar) {
        return StringUtils.split(this.config, separatorChar);
    }
}

配置文件读取类

@ConfigurationProperties("example.service")//从yml的配置文件里面注入
public class StarterServiceProperties {
    private String config;

    public void setConfig(String config) {
        this.config = config;
    }

    public String getConfig() {
        return config;
    }
 }

编写自动配置的类:

@Configuration
@ConditionalOnClass(StarterService.class)                    //在当classpath下发现该类的情况下进行自动配置。
@EnableConfigurationProperties(StarterServiceProperties.class)
public class StarterAutoConfigure {

    @Autowired
    private StarterServiceProperties properties;

    @Bean
    @ConditionalOnMissingBean                               //当Spring Context中不存在该Bean时
    @ConditionalOnProperty(prefix = "example.service", value = "enabled", havingValue = "true")//当配置文件中example.service.enabled=true

StarterService starterService (){
return new StarterService(properties.getConfig());
    }
}

最后:

在resources/META-INF/下创建spring.factories文件,并添加如下内容: 

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\

com.example.autocinfigure.StarterAutoConfigure

项目发布:

在项目根目录执行 mvn install 进行打包安装。

测试我们的Starter

@Autowired
private StarterService starterService;

@Test
public void starterTest() {
    String[] splitArray = starterService.split(",");
    System.out.println(splitArray);
}

参考:

https://mp.weixin.qq.com/s/a--34E6iFTopUVC6orW7Jw

posted @ 2019-03-28 14:59  LeeJuly  阅读(354)  评论(0)    收藏  举报