| 
							
							
							
						 |  |  | @ -1,15 +1,7 @@ | 
		
	
		
			
				|  |  |  |  | package com.binarywang.spring.starter.wxjava.mp.config; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | import com.binarywang.spring.starter.wxjava.mp.properties.RedisProperties; | 
		
	
		
			
				|  |  |  |  | import com.binarywang.spring.starter.wxjava.mp.enums.StorageType; | 
		
	
		
			
				|  |  |  |  | import com.binarywang.spring.starter.wxjava.mp.properties.WxMpProperties; | 
		
	
		
			
				|  |  |  |  | import lombok.RequiredArgsConstructor; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.common.redis.JedisWxRedisOps; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.common.redis.WxRedisOps; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.config.WxMpConfigStorage; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl; | 
		
	
		
			
				|  |  |  |  | import java.util.Set; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | import org.apache.commons.lang3.StringUtils; | 
		
	
		
			
				|  |  |  |  | import org.springframework.beans.factory.annotation.Value; | 
		
	
		
			
				|  |  |  |  | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | 
		
	
	
		
			
				
					
					|  |  |  | @ -17,8 +9,24 @@ import org.springframework.context.ApplicationContext; | 
		
	
		
			
				|  |  |  |  | import org.springframework.context.annotation.Bean; | 
		
	
		
			
				|  |  |  |  | import org.springframework.context.annotation.Configuration; | 
		
	
		
			
				|  |  |  |  | import org.springframework.data.redis.core.StringRedisTemplate; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | import com.binarywang.spring.starter.wxjava.mp.enums.StorageType; | 
		
	
		
			
				|  |  |  |  | import com.binarywang.spring.starter.wxjava.mp.properties.RedisProperties; | 
		
	
		
			
				|  |  |  |  | import com.binarywang.spring.starter.wxjava.mp.properties.WxMpProperties; | 
		
	
		
			
				|  |  |  |  | import com.google.common.collect.Sets; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | import lombok.RequiredArgsConstructor; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.common.redis.JedisWxRedisOps; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.common.redis.WxRedisOps; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.bean.WxMpHostConfig; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.config.WxMpConfigStorage; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; | 
		
	
		
			
				|  |  |  |  | import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl; | 
		
	
		
			
				|  |  |  |  | import redis.clients.jedis.JedisPool; | 
		
	
		
			
				|  |  |  |  | import redis.clients.jedis.JedisPoolAbstract; | 
		
	
		
			
				|  |  |  |  | import redis.clients.jedis.JedisPoolConfig; | 
		
	
		
			
				|  |  |  |  | import redis.clients.jedis.JedisSentinelPool; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | /** | 
		
	
		
			
				|  |  |  |  |  * 微信公众号存储策略自动配置. | 
		
	
	
		
			
				
					
					|  |  |  | @ -54,6 +62,14 @@ public class WxMpStorageAutoConfiguration { | 
		
	
		
			
				|  |  |  |  | 			config = defaultConfigStorage(); | 
		
	
		
			
				|  |  |  |  | 			break; | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		// wx host config | 
		
	
		
			
				|  |  |  |  | 		if (null != wxMpProperties.getHosts() && StringUtils.isNotEmpty(wxMpProperties.getHosts().getApiHost())) { | 
		
	
		
			
				|  |  |  |  | 			WxMpHostConfig hostConfig = new WxMpHostConfig(); | 
		
	
		
			
				|  |  |  |  | 			hostConfig.setApiHost(wxMpProperties.getHosts().getApiHost()); | 
		
	
		
			
				|  |  |  |  | 			hostConfig.setMpHost(wxMpProperties.getHosts().getMpHost()); | 
		
	
		
			
				|  |  |  |  | 			hostConfig.setOpenHost(wxMpProperties.getHosts().getOpenHost()); | 
		
	
		
			
				|  |  |  |  | 			config.setHostConfig(hostConfig); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		return config; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @ -64,14 +80,15 @@ public class WxMpStorageAutoConfiguration { | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 	private WxMpConfigStorage jedisConfigStorage() { | 
		
	
		
			
				|  |  |  |  |     JedisPool jedisPool; | 
		
	
		
			
				|  |  |  |  | 		JedisPoolAbstract jedisPool; | 
		
	
		
			
				|  |  |  |  | 		if (StringUtils.isNotEmpty(redisHost) || StringUtils.isNotEmpty(redisHost2)) { | 
		
	
		
			
				|  |  |  |  | 			jedisPool = getJedisPool(); | 
		
	
		
			
				|  |  |  |  | 		} else { | 
		
	
		
			
				|  |  |  |  | 			jedisPool = applicationContext.getBean(JedisPool.class); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		WxRedisOps redisOps = new JedisWxRedisOps(jedisPool); | 
		
	
		
			
				|  |  |  |  |     WxMpRedisConfigImpl wxMpRedisConfig = new WxMpRedisConfigImpl(redisOps, wxMpProperties.getConfigStorage().getKeyPrefix()); | 
		
	
		
			
				|  |  |  |  | 		WxMpRedisConfigImpl wxMpRedisConfig = new WxMpRedisConfigImpl(redisOps, | 
		
	
		
			
				|  |  |  |  | 				wxMpProperties.getConfigStorage().getKeyPrefix()); | 
		
	
		
			
				|  |  |  |  | 		setWxMpInfo(wxMpRedisConfig); | 
		
	
		
			
				|  |  |  |  | 		return wxMpRedisConfig; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
	
		
			
				
					
					|  |  |  | @ -79,7 +96,8 @@ public class WxMpStorageAutoConfiguration { | 
		
	
		
			
				|  |  |  |  | 	private WxMpConfigStorage redisTemplateConfigStorage() { | 
		
	
		
			
				|  |  |  |  | 		StringRedisTemplate redisTemplate = applicationContext.getBean(StringRedisTemplate.class); | 
		
	
		
			
				|  |  |  |  | 		WxRedisOps redisOps = new RedisTemplateWxRedisOps(redisTemplate); | 
		
	
		
			
				|  |  |  |  |     WxMpRedisConfigImpl wxMpRedisConfig = new WxMpRedisConfigImpl(redisOps, wxMpProperties.getConfigStorage().getKeyPrefix()); | 
		
	
		
			
				|  |  |  |  | 		WxMpRedisConfigImpl wxMpRedisConfig = new WxMpRedisConfigImpl(redisOps, | 
		
	
		
			
				|  |  |  |  | 				wxMpProperties.getConfigStorage().getKeyPrefix()); | 
		
	
		
			
				|  |  |  |  | 		setWxMpInfo(wxMpRedisConfig); | 
		
	
		
			
				|  |  |  |  | 		return wxMpRedisConfig; | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
	
		
			
				
					
					|  |  |  | @ -100,7 +118,7 @@ public class WxMpStorageAutoConfiguration { | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   private JedisPool getJedisPool() { | 
		
	
		
			
				|  |  |  |  | 	private JedisPoolAbstract getJedisPool() { | 
		
	
		
			
				|  |  |  |  | 		WxMpProperties.ConfigStorage storage = wxMpProperties.getConfigStorage(); | 
		
	
		
			
				|  |  |  |  | 		RedisProperties redis = storage.getRedis(); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @ -119,6 +137,10 @@ public class WxMpStorageAutoConfiguration { | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		config.setTestOnBorrow(true); | 
		
	
		
			
				|  |  |  |  | 		config.setTestWhileIdle(true); | 
		
	
		
			
				|  |  |  |  | 		if (StringUtils.isNotEmpty(redis.getSentinelIps())) { | 
		
	
		
			
				|  |  |  |  | 			Set<String> sentinels = Sets.newHashSet(redis.getSentinelIps().split(",")); | 
		
	
		
			
				|  |  |  |  | 			return new JedisSentinelPool(redis.getSentinelName(), sentinels); | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 		return new JedisPool(config, redis.getHost(), redis.getPort(), redis.getTimeout(), redis.getPassword(), | 
		
	
		
			
				|  |  |  |  | 				redis.getDatabase()); | 
		
	
	
		
			
				
					
					|  |  |  | 
 |