首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义Spring Boot Starter

自定义Spring Boot Starter

作者头像
十毛
发布2019-08-05 15:39:42
4650
发布2019-08-05 15:39:42
举报

使用Spring Boot时,各个starter用起来非常方便。所以我们也可以把自己的一些组件项目封装为starter,方便其他业务系统使用

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>2.1.6.RELEASE</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <version>2.1.6.RELEASE</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.8</version>
        <optional>true</optional>
    </dependency>
</dependencies>

属性配置类

@Data
@ConfigurationProperties(prefix = "tenmao")
public class TenmaoProperties {
    private boolean enabled;
    private String name;
    private String url;
    private Set<String> hobbies;
}

核心服务类

public class TenmaoService {
    private TenmaoProperties tenmaoProperties;

    public TenmaoService(TenmaoProperties tenmaoProperties) {
        this.tenmaoProperties = tenmaoProperties;
    }

    public void greeting() {
        System.out.printf("tenmao: %s%n", tenmaoProperties);
    }
}

自动配置类

@Configuration
@ConditionalOnClass({TenmaoService.class, TenmaoProperties.class})
@EnableConfigurationProperties({TenmaoProperties.class})
@ConditionalOnProperty(prefix = "tenmao", value = "enabled", matchIfMissing = true)
public class TenmaoAutoConfiguration {
    private final TenmaoProperties tenmaoProperties;

    @Autowired
    public TenmaoAutoConfiguration(TenmaoProperties tenmaoProperties) {
        this.tenmaoProperties = tenmaoProperties;
    }

    @Bean
    @ConditionalOnMissingBean(TenmaoService.class)
    public TenmaoService tenmaoService() {
        return new TenmaoService(tenmaoProperties);
    }
}

现在可以打包发布到maven仓库给其他项目使用了

使用


使用方式如下:

  • 添加依赖
<dependency>
    <groupId>com.tenmao</groupId>
    <artifactId>tenmao-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
  • 配置信息(application.yml)
tenmao:
  enabled: true
  name: tenmao
  url: http://www.jianshu.com
  hobbies:
    - basketball
    - football
    - pingpong
  • 直接注入就可以使用
@Resource
private TenmaoService tenmaoService;

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 添加依赖
  • 属性配置类
  • 核心服务类
  • 自动配置类
  • 使用
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档