Clarify commons-pool2 requirement for redis
`JedisConnectionFactory` needs `commons-pool2` for quite some time now and our auto-configuration had a special case to handle redis if `commons-pool2` isn't available. This commit removes that code as using it would lead to a failure anyway. Closes gh-5718
This commit is contained in:
parent
6fe9177f0d
commit
9059184a6a
|
|
@ -24,11 +24,10 @@ import org.apache.commons.pool2.impl.GenericObjectPool;
|
||||||
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.Jedis;
|
||||||
import redis.clients.jedis.JedisPoolConfig;
|
import redis.clients.jedis.JedisPoolConfig;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
|
||||||
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Cluster;
|
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Cluster;
|
||||||
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel;
|
import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
|
@ -55,31 +54,40 @@ import org.springframework.util.StringUtils;
|
||||||
* @author Christoph Strobl
|
* @author Christoph Strobl
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @author Eddú Meléndez
|
* @author Eddú Meléndez
|
||||||
|
* @author Stephane Nicoll
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class })
|
@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class })
|
||||||
@EnableConfigurationProperties
|
@EnableConfigurationProperties(RedisProperties.class)
|
||||||
public class RedisAutoConfiguration {
|
public class RedisAutoConfiguration {
|
||||||
|
|
||||||
@Bean(name = "org.springframework.autoconfigure.redis.RedisProperties")
|
|
||||||
@ConditionalOnMissingBean
|
|
||||||
public RedisProperties redisProperties() {
|
|
||||||
return new RedisProperties();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for Redis configurations.
|
* Redis connection configuration.
|
||||||
*/
|
*/
|
||||||
protected static abstract class AbstractRedisConfiguration {
|
@Configuration
|
||||||
|
@ConditionalOnClass(GenericObjectPool.class)
|
||||||
|
protected static class RedisConnectionConfiguration {
|
||||||
|
|
||||||
@Autowired
|
private final RedisProperties properties;
|
||||||
protected RedisProperties properties;
|
|
||||||
|
|
||||||
@Autowired(required = false)
|
private final RedisSentinelConfiguration sentinelConfiguration;
|
||||||
private RedisSentinelConfiguration sentinelConfiguration;
|
|
||||||
|
|
||||||
@Autowired(required = false)
|
private final RedisClusterConfiguration clusterConfiguration;
|
||||||
private RedisClusterConfiguration clusterConfiguration;
|
|
||||||
|
public RedisConnectionConfiguration(RedisProperties properties,
|
||||||
|
ObjectProvider<RedisSentinelConfiguration> sentinelConfigurationProvider,
|
||||||
|
ObjectProvider<RedisClusterConfiguration> clusterConfigurationProvider) {
|
||||||
|
this.properties = properties;
|
||||||
|
this.sentinelConfiguration = sentinelConfigurationProvider.getIfAvailable();
|
||||||
|
this.clusterConfiguration = clusterConfigurationProvider.getIfAvailable();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(RedisConnectionFactory.class)
|
||||||
|
public JedisConnectionFactory redisConnectionFactory()
|
||||||
|
throws UnknownHostException {
|
||||||
|
return applyProperties(createJedisConnectionFactory());
|
||||||
|
}
|
||||||
|
|
||||||
protected final JedisConnectionFactory applyProperties(
|
protected final JedisConnectionFactory applyProperties(
|
||||||
JedisConnectionFactory factory) {
|
JedisConnectionFactory factory) {
|
||||||
|
|
@ -147,49 +155,6 @@ public class RedisAutoConfiguration {
|
||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Redis connection configuration.
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
@ConditionalOnMissingClass("org.apache.commons.pool2.impl.GenericObjectPool")
|
|
||||||
protected static class RedisConnectionConfiguration
|
|
||||||
extends AbstractRedisConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnMissingBean(RedisConnectionFactory.class)
|
|
||||||
public JedisConnectionFactory redisConnectionFactory()
|
|
||||||
throws UnknownHostException {
|
|
||||||
return applyProperties(createJedisConnectionFactory());
|
|
||||||
}
|
|
||||||
|
|
||||||
private JedisConnectionFactory createJedisConnectionFactory() {
|
|
||||||
if (getSentinelConfig() != null) {
|
|
||||||
return new JedisConnectionFactory(getSentinelConfig());
|
|
||||||
}
|
|
||||||
if (getClusterConfiguration() != null) {
|
|
||||||
return new JedisConnectionFactory(getClusterConfiguration());
|
|
||||||
}
|
|
||||||
return new JedisConnectionFactory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Redis pooled connection configuration.
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
@ConditionalOnClass(GenericObjectPool.class)
|
|
||||||
protected static class RedisPooledConnectionConfiguration
|
|
||||||
extends AbstractRedisConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnMissingBean(RedisConnectionFactory.class)
|
|
||||||
public JedisConnectionFactory redisConnectionFactory()
|
|
||||||
throws UnknownHostException {
|
|
||||||
return applyProperties(createJedisConnectionFactory());
|
|
||||||
}
|
|
||||||
|
|
||||||
private JedisConnectionFactory createJedisConnectionFactory() {
|
private JedisConnectionFactory createJedisConnectionFactory() {
|
||||||
JedisPoolConfig poolConfig = this.properties.getPool() != null
|
JedisPoolConfig poolConfig = this.properties.getPool() != null
|
||||||
? jedisPoolConfig() : new JedisPoolConfig();
|
? jedisPoolConfig() : new JedisPoolConfig();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue