package com.lambdaworks.redis.support; import static com.lambdaworks.redis.LettuceStrings.isNotEmpty; import com.lambdaworks.redis.RedisClient; import com.lambdaworks.redis.RedisURI; /** * Factory Bean for {@link RedisClient} instances. Needs either a {@link java.net.URI} or a {@link RedisURI} as input and allows * to reuse {@link com.lambdaworks.redis.resource.ClientResources}. URI Formats: * {@code * redis-sentinel://host[:port][,host2[:port2]][/databaseNumber]#sentinelMasterId * } * * {@code * redis://host[:port][/databaseNumber] * } * * @see RedisURI * @see ClientResourcesFactoryBean * @author Mark Paluch * @since 3.0 */ public class RedisClientFactoryBean extends LettuceFactoryBeanSupport<RedisClient> { @Override public void afterPropertiesSet() throws Exception { if (getRedisURI() == null) { RedisURI redisURI = RedisURI.create(getUri()); if (isNotEmpty(getPassword())) { redisURI.setPassword(getPassword()); } setRedisURI(redisURI); } super.afterPropertiesSet(); } @Override protected void destroyInstance(RedisClient instance) throws Exception { instance.shutdown(); } @Override public Class<?> getObjectType() { return RedisClient.class; } @Override protected RedisClient createInstance() throws Exception { if (getClientResources() != null) { return RedisClient.create(getClientResources(), getRedisURI()); } return RedisClient.create(getRedisURI()); } }