专栏首页用户1337634的专栏自定义Spring Boot Starter

自定义Spring Boot Starter

使用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;

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java单元测试 --- Spock

    易读的测试用例名字,可以使用任意字符串,比如下面中test stack 易理解的代码模块:given, when, then, expect

    十毛
  • Feign Client without Eureka

    十毛
  • Spring Boot使用事务

    Spring Boot中实现事务没有额外的Jar包,还是基本的数据库访问包,比如mybatis

    十毛
  • Docker私有仓库实例

    用户1112962
  • jzy3D从入门到弃坑

    下载所有例子,注意其示例是Eclipse的,我喜欢IDEA+Maven,因此,直接将下载文件解压,并将其lib中的所有包全部提取出来都作为依赖文件添加进IDEA...

    DrawSky
  • 图书管理系统(一)项目框架结构搭建

    学习了 Spring、Spring MVC 和 MyBatis 三大框架之后,我们需要将其整合起来,而在正式编写业务逻辑之前,我们可以先搭建好一个项目框架,将这...

    村雨遥
  • 手把手教你搭建分布式项目环境

    根据电商项目模拟练习后 ,根据个人总结和经验重新进行了分布式项目的框架搭建 , 现总结过程步骤 ,为以后进行相关类型的开发做好基础~~~

    时间静止不是简史
  • 手把手教你搭建SpringCloud项目

    @SpringBootApplication 这个标注就表示,这个项目是SpringBoot项目,并且此类是项目的主入口类。

    刘文正
  • 利用springboot 将数据库中的数据导出为excle。还实现将excle里面的数据上传到数据库里面

    写一个接口,浏览器一输入这个接口,那么就可以导出数据库里面的数据到excle表里面了。要实现这个功能。我们使用springboot

    一天不写程序难受
  • cms项目系列(一)——SSM框架搭建

    我们在main目录下新建两个文件夹,分别是java和resources,并把cms标记为Sources目录,resources标记为Resources目录;

    用户7544680

扫码关注云+社区

领取腾讯云代金券