|
|
@@ -6,9 +6,8 @@ import lombok.RequiredArgsConstructor; |
|
|
|
import me.chanjar.weixin.mp.config.WxMpConfigStorage; |
|
|
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; |
|
|
|
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl; |
|
|
|
import org.redisson.api.RedissonClient; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
|
|
|
import org.springframework.context.ApplicationContext; |
|
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
import redis.clients.jedis.JedisPool; |
|
|
@@ -22,13 +21,9 @@ import redis.clients.jedis.JedisPoolConfig; |
|
|
|
@Configuration |
|
|
|
@RequiredArgsConstructor |
|
|
|
public class WxMpStorageAutoConfiguration { |
|
|
|
private final WxMpProperties properties; |
|
|
|
|
|
|
|
@Autowired(required = false) |
|
|
|
private JedisPool jedisPool; |
|
|
|
|
|
|
|
@Autowired(required = false) |
|
|
|
private RedissonClient redissonClient; |
|
|
|
private final WxMpProperties properties; |
|
|
|
private final ApplicationContext applicationContext; |
|
|
|
|
|
|
|
@Bean |
|
|
|
@ConditionalOnMissingBean(WxMpConfigStorage.class) |
|
|
@@ -49,13 +44,21 @@ public class WxMpStorageAutoConfiguration { |
|
|
|
} |
|
|
|
|
|
|
|
private WxMpRedisConfigImpl getWxMpInRedisConfigStorage() { |
|
|
|
JedisPool poolToUse = jedisPool; |
|
|
|
if (poolToUse == null) { |
|
|
|
poolToUse = getJedisPool(); |
|
|
|
RedisProperties.ImplType implType = properties.getConfigStorage().getRedis().getImpl(); |
|
|
|
boolean reuseBean = properties.getConfigStorage().getRedis().isReuseBean(); |
|
|
|
if (implType == RedisProperties.ImplType.jedis) { |
|
|
|
JedisPool pool = null; |
|
|
|
if (reuseBean) { |
|
|
|
pool = getBean(JedisPool.class); |
|
|
|
} |
|
|
|
if (pool == null) { |
|
|
|
pool = getJedisPool(); |
|
|
|
} |
|
|
|
WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(pool); |
|
|
|
setWxMpInfo(config); |
|
|
|
return config; |
|
|
|
} |
|
|
|
WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(poolToUse); |
|
|
|
setWxMpInfo(config); |
|
|
|
return config; |
|
|
|
throw new UnsupportedOperationException(); |
|
|
|
} |
|
|
|
|
|
|
|
private void setWxMpInfo(WxMpDefaultConfigImpl config) { |
|
|
@@ -85,8 +88,14 @@ public class WxMpStorageAutoConfiguration { |
|
|
|
config.setTestOnBorrow(true); |
|
|
|
config.setTestWhileIdle(true); |
|
|
|
|
|
|
|
JedisPool pool = new JedisPool(config, redis.getHost(), redis.getPort(), |
|
|
|
redis.getTimeout(), redis.getPassword(), redis.getDatabase()); |
|
|
|
return pool; |
|
|
|
return new JedisPool(config, redis.getHost(), redis.getPort(), redis.getTimeout(), redis.getPassword(), |
|
|
|
redis.getDatabase()); |
|
|
|
} |
|
|
|
|
|
|
|
private <T> T getBean(Class<T> clazz) { |
|
|
|
if (this.applicationContext.getBeanNamesForType(clazz, false, false).length > 0) { |
|
|
|
return this.applicationContext.getBean(clazz); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |