|
@@ -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;
|
|
|
}
|
|
|
}
|