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