RedisAutoConfiguration類代碼如下:
可以看到在這個類中配置了2個bean: redisTemplate和stringRedisTemplate.
而它通過@EnableConfigurationProperties(RedisProperties.class)注解,把配置文件中配置的Redis相關的信息引入進來了,RedisProperties代碼如下:
還可以看到RedisAutoConfiguration上有@Import注解
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
LettuceConnectionConfiguration代碼如下:
可以看到創建了一個名為redisConnectionFactory的類型為LettuceConnectionFactory的bean,父類型為RedisConnectionFactory.
JedisConnectionFactory代碼如下:
可以看到創建了一個名為redisConnectionFactory的類型為JedisConnectionFactory的bean,父類型為RedisConnectionFactory.
通過使用@ConditionalOnMissingBean(RedisConnectionFactory.class),可以確保容器中只會從LettuceRedisConnectionFactory和JedisConnectionFactory中二選一。最后,二選一的RedisConnectionFactory bean會被RedisAutoConfiguration注入
spring-boot-starter-data-redis默認引入的是lettuce依賴,所以默認使用的RedisConnectionFactory是LettuceConnectionFactory.想使用JedisConnectionFactory的話,需要手動引入jedis依賴
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.6.0</version></dependency>