自定义Sprin-Boot-Starter

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 自定义Sprin-Boot-Starter

@[TOC]

1 创建redis-spring-boot-autoconfigure模块

1.1 新建RedisProperties配置类

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "redis")
public class RedisProperties {
   

    private String host = "localhost";

    private int port = 6379;

    public String getHost() {
   
        return host;
    }

    public void setHost(String host) {
   
        this.host = host;
    }

    public int getPort() {
   
        return port;
    }

    public void setPort(int port) {
   
        this.port = port;
    }
}

1.2 新建RedisAutoConfiguration,注入bean

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import redis.clients.jedis.Jedis;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(RedisProperties.class)
@ConditionalOnClass(Jedis.class)
public class RedisAutoConfiguration {
   

    /**
     * 提供Jedis jedis
     * @return
     */
    @Bean
    @ConditionalOnMissingBean(name = "jedis")
    public Jedis jedis(RedisProperties redisProperties){
   
        System.out.println("RedisAutoConfiguration.......");
        return new Jedis(redisProperties.getHost(),redisProperties.getPort());
    }
}

1.3 新建spring.factories

  • 路径为:resources\META-INF\spring.factories
  • 内容如下:

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.yunfeng.redis.config.RedisAutoConfiguration
    

    1.4 pom的依赖如下

      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
          </dependency>
    
          <!-- 引入jedis依赖 -->
          <dependency>
              <groupId>redis.clients</groupId>
              <artifactId>jedis</artifactId>
          </dependency>
      </dependencies>
    

    2 创建redis-spring-boot-starter模块,并依赖redis-spring-boot-autoconfigure的模块

  • 此模块只是包装作用,无需其他代码
  • pom依赖如下:

      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
          </dependency>
    
          <!-- 引入配置模块 -->
          <dependency>
              <groupId>com.yunfeng</groupId>
              <artifactId>redis-spring-boot-autoconfigure</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
      </dependencies>
    

    3 新建测试模块,并引入自定义的redis-starter依赖,测试获取Jedis的Bean,并操作redis

    3.1 测试模块的pom中引入自己定义的starter

      <!-- 引入自定义redis的starter -->
          <dependency>
              <groupId>com.example</groupId>
              <artifactId>redis-spring-boot-starter</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
    

    3.2 测试模块的启动类里测试

    ```java
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.context.annotation.Bean;
    import redis.clients.jedis.Jedis;

@SpringBootApplication
public class SpringbootConditionApplication {

public static void main(String[] args) {
    //启动Springboot的应用,返回Spring的IOC容器
    ConfigurableApplicationContext context = SpringApplication.run(SpringbootConditionApplication.class, args);

    Jedis jedis = context.getBean(Jedis.class);
    System.out.println(jedis);

    jedis.set("name","husiyuan");
    String name = jedis.get("name");
    System.out.println("name = " + name);
}

//若存在则不使用自定义starter中的Jedis
@Bean
public Jedis jedis(){
    return new Jedis("localhost",6379);
}

}
```

相关实践学习
基于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
目录
相关文章
|
8月前
|
消息中间件 Java Maven
深入理解Spring Boot Starter:概念、特点、场景、原理及自定义starter
深入理解Spring Boot Starter:概念、特点、场景、原理及自定义starter
|
7月前
|
Java Maven 开发者
Spring Boot中的自定义Starter开发
Spring Boot中的自定义Starter开发
|
7月前
|
监控 安全 Java
解析Spring Boot中的Actuator端点
解析Spring Boot中的Actuator端点
|
8月前
|
Java Maven
6.自定义starter
6.自定义starter
48 0
|
Prometheus 监控 安全
Spring Boot Actuator解析
Actuator 是 SpringBoot 项目中一个非常强大一个功能,有助于对应用程序进行监视和管理,通过 Restful Api 请求来监管、审计、收集应用的运行情况。
200 0
|
Java 大数据 数据库
Spring Boot配置绑定
你好看官,里面请!今天笔者讲的是Spring Boot配置绑定。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
234 2
|
Java Maven
自定义Starter
启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库;
自定义Starter
|
消息中间件 缓存 JSON
spring-boot-route(十八)spring-boot-adtuator监控应用
spring-boot-route(十八)spring-boot-adtuator监控应用
119 0
|
消息中间件 Java
你可知道publisherReturns参数在spring-boot-starter-amqp中的作用?
你可知道publisherReturns参数在spring-boot-starter-amqp中的作用?
你可知道publisherReturns参数在spring-boot-starter-amqp中的作用?
|
NoSQL Java Redis
自定义一个starter
自定义一个打印方法执行时间的切面starter
1327 0
自定义一个starter