自定义一个springboot的starter插件

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: springboot对第三方包的整合是由maven依赖和starter插件完成的。

springboot对第三方包的整合是由maven依赖和starter插件完成的。


比如spring-boot-starter-web、spring-boot-starter-data-redis、spring-boot-starter-jdbc等等。


如果要自定义starter,我们以redis的整合包为例,Ctrl+左键点击进入redis依赖,可以看到里面有一个spring-boot-test-autoconfigure依赖,点进这个依赖,里面还有一个spring-boot-autoconfigure依赖,我们copy这个自动配置的依赖到自己的自定义插件的项目中。


自定义插件,新建一个maven项目名为token-redis-springboot-starter,依赖引入上面那个自动配置的依赖以及


spring-boot-starter-parent依赖。

创建三个类,结构如下



首先TokenProperties类

package com.vhukze.utils;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "vhukze")
public class TokenProperties {
    private String tokenRedisHost;
    private String tokenRedisPwd;
    public void setTokenRedisHost(String tokenRedisHost) {
        this.tokenRedisHost = tokenRedisHost;
    }
    public void setTokenRedisPwd(String tokenRedisPwd) {
        this.tokenRedisPwd = tokenRedisPwd;
    }
    public String getTokenRedisHost() {
        return tokenRedisHost;
    }
    public String getTokenRedisPwd() {
        return tokenRedisPwd;
    }
}


TokenService类

package com.vhukze.service;
import com.vhukze.utils.TokenProperties;
import org.springframework.beans.factory.annotation.Autowired;
public class TokenService {
    @Autowired
    private TokenProperties tokenProperties;
    public String getToken(){
        return tokenProperties.getTokenRedisHost()+"---"+tokenProperties.getTokenRedisPwd();
    }
}
TokenAutoConfiguration类
package com.vhukze.config;
import com.vhukze.service.TokenService;
import com.vhukze.utils.TokenProperties;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(TokenProperties.class)
public class TokenAutoConfiguration {
    @Bean
    public TokenService tokenService(){
        return new TokenService();
    }
}


在resources文件夹下创建一个spring.factories配置文件,用来注册自动配置类,内容如下,如果有多个配置类 用逗号隔开


org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.vhukze.config.TokenAutoConfiguration

如果要别人使用此starter插件的时候编写配置文件的时候有提示,只需引入下面这个依赖即可


如果配置文件还是没有提示,那就是你的idea没有安装Spring Assistant插件,ctrl+alt+s,点击Plugins,搜索Spring Assistant


下载安装重启即可


<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

到这里自定义的starter就完成了,进入项目路径,执行mvn clean install命令把项目打包进本地maven仓库


创建一个测试项目 test-springboot  把自定的starter依赖引入

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.vhukze</groupId>
            <artifactId>token-redis-springboot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


在resources下创建application.yml配置文件,配置文件中的key没有大写,他会自动把你的驼峰式命名转换成-形式


vhukze:
  token-redis-host: 127.0.0.1
  token-redis-pwd: 12345
创建一个controller用来测试
package com.vhukze.controller;
import com.vhukze.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class IndexController {
    @Autowired
    private TokenService tokenService;
    public static void main(String[] args) {
        SpringApplication.run(IndexController.class);
    }
    @RequestMapping("/test")
    public String test(){
        return tokenService.getToken();
    }
}


访问localhost:8080/test


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
19天前
|
XML Java 数据格式
Springboot中自定义组件
Springboot中自定义组件
|
19天前
|
XML 编解码 Java
Spring Boot 中的 RestTemplate和Retrofit 插件很好
Spring Boot 中的 RestTemplate和Retrofit 插件很好
52 1
|
19天前
|
安全 Java Spring
SpringBoot2 | SpringBoot监听器源码分析 | 自定义ApplicationListener(六)
SpringBoot2 | SpringBoot监听器源码分析 | 自定义ApplicationListener(六)
53 0
|
19天前
|
设计模式 Java 机器人
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter
|
19天前
|
SQL Java 数据库连接
【mybatis】第一篇,Springboot中使用插件PageHelper不生效解决方案
【mybatis】第一篇,Springboot中使用插件PageHelper不生效解决方案
|
19天前
|
缓存 Java Sentinel
Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截
Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截
|
19天前
|
Java 数据库 数据安全/隐私保护
【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制
【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制
199 1
|
18天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
17天前
|
Java
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
Springboot 使用自定义注解结合AOP方式校验接口参数
|
19天前
|
前端开发 Java
SpringBoot之自定义注解参数校验
SpringBoot之自定义注解参数校验
25 2