springboot2.x +redis使用和源码分析一(springboot自动装配源码分析)

本文分析了SpringBoot2.x中Redis的自动配置源码,包括RedisProperties、RedisAutoConfiguration、RedisConnectionConfiguration及其子类,探讨了Lettuce和Jedis的配置与选择,并展示了如何进行定制化配置。同时,介绍了RedisRepositoriesAutoConfiguration和RedisReactiveAutoConfiguration在数据存储和响应式编程中的应用。
摘要由CSDN通过智能技术生成

序言:

个人感觉springboot的源码是web应用开源框架中写的最好的,观看它的源码可以学习它的编码风格,代码设计思想,如何做到给予使用者最好的使用体验,隐藏连接各应用组件的实现细节,极大降低类开发者实力的要求。查看springboot对各组件的自动装配实现,可以很详细的了解到spring对于组件核心类的初始化过程,以及核心类的作用以及之间的依赖关系。

springboot提供的所有的自动装配类都在spring-boot-autoconfigure(直接查看源码)

 也可以通过官网来进行查看(选取要看的版本):

https://docs.spring.io/spring-boot/docs/2.2.3.BUILD-SNAPSHOT/reference/html/appendix-auto-configuration-classes.html#auto-configuration-classes-from-autoconfigure-module


如图所示是spring-boot-autoconfigure下对于redis提供类:

1:源码分析

1.1:RedisProperties

@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {
    //使用redis database数 默认为0
    private int database = 0;
    //连接url 可包含用户和密码 例如 redis://user:password@example.com:6379
    private String url;
    //redis 端口号
    private String host = "localhost";
    //密码
    private String password;
    //端口号
    private int port = 6379;
    //是否开启SSL
    private boolean ssl;
    //超时时间
    private Duration timeout;
    //设置客户端名
    private String clientName;
    //支持哨兵机制
    private Sentinel sentinel;
    //支持集群配置
    private Cluster cluster;
    //Jedis客户端
    private final Jedis jedis = new Jedis();
    //Lettuce客户端
    private final Lettuce lettuce = new Lettuce();
    /**
     * 连接池一些属性
     */
    public static class Pool {
        //池中维护的最大空闲数 为负值代表
        private int maxIdle = 8;
        //池中要维护的最小空闲连接数 此值必须为正值
        private int minIdle = 0;
        //最大连接数 -数代表无限制
        private int maxActive = 8;
        //最大等待时间
        private Duration maxWait = Duration.ofMillis(-1);
        //
        private Duration timeBetweenEvictionRuns;

    }
    /**
     * 集群配置
     */
    public static class Cluster {
        //集群各节点地址host:port 多个以,隔开隔开
        private List<String> nodes;
        //集群中执行命令时重定向node的最大数量
        private Integer maxRedirects;
    }
    /**
     *Redis 哨兵参数属性
     */
    public static class Sentinel {
        //集群中master名
        private String master;
        //集群各节点地址host:port 多个以,隔开隔开
        private List<String> nodes;
    }
    /**
     * jedis客户端属性
     */
    public static class Jedis {
        //连接池一些配置
        private Pool pool;
    }
    /**
     *Lettuce客户端属性
     */
    public static class Lettuce {
        //停止超时时间
        private Duration shutdownTimeout = Duration.ofMillis(100);
       //连接池一些配置
        private Pool pool;
    }

}

1.2 RedisAutoConfiguration

RedisAutoConfiguration是springboot结合Redis配置核心类。

//禁止其它配置类使用该配置类的@Bean方法
&#
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值