0
点赞
收藏
分享

微信扫一扫

@EnableRedisHttpSession注解,redis自动连接原理探析

IT程序员 2021-09-28 阅读 57

接上篇 项目中redis的集成,并自动连接

  1. 打断点运行,首先进入ImportAware接口的setImportMetadata方法中,获取到RedisHttpSessionConfiguration配置类的数据配置

  1. 进入JedisConnectionFactory,创建connectionFactory
    很是奇怪,这个connectionFactory从哪里来的?于是进入RedisConnectionFactory接口,F4查看该接口的结构关系。有四个实现类,这里断点跟踪是进入JedisConnectionFactory

我们知道,java执行顺序是:父类静态块-->子类静态块-->父类非静态块-->父类构造方法-->子类非静态块-->子类构造方法

第四个构造函数

   public JedisConnectionFactory(RedisSentinelConfiguration sentinelConfig, JedisPoolConfig poolConfig) {
       this.sentinelConfig = sentinelConfig;
       this.poolConfig = poolConfig != null ? poolConfig : new JedisPoolConfig();
   }

执行完这个构造函数,是否就可以认为spring已经注入了JedisConnectionFactory对象呢??

Spring整合Redis之ConnectionFactory从何而来?

  1. 继续执行,进入 RedisHttpSessionConfiguration类的sessionRedisTemplate方法中。该方法入参为 RedisConnectionFactory,该入参是否为上一步注入的JedisConnectionFactory对象呢??

  1. 继续执行,进入RedisConfig配置类的redisTemplate方法中


RedisHttpSessionConfiguration类中@Bean的注入顺序:

enableRedisKeyspaceNotificationsInitializer方法中,
new EnableRedisKeyspaceNotificationsInitializer(connectionFactory,this.configureRedisAction)
EnableRedisKeyspaceNotificationsInitializer是一个静态类,并实现了InitializingBean接口

举报

相关推荐

0 条评论