Explorar o código

规范统一config部分代码

Binary Wang %!s(int64=5) %!d(string=hai) anos
pai
achega
d9b7217009
Modificáronse 34 ficheiros con 277 adicións e 294 borrados
  1. 1 1
      starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpServiceAutoConfiguration.java
  2. 8 8
      starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpStorageAutoConfiguration.java
  3. 5 7
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java
  4. 23 19
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java
  5. 8 7
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpJedisConfigStorage.java
  6. 31 28
      weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpInMemoryConfigStorage.java
  7. 2 2
      weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/ApiTestModule.java
  8. 2 2
      weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoInMemoryConfigStorage.java
  9. 23 21
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
  10. 140 167
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInRedisConfig.java
  11. 2 2
      weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConfig.java
  12. 1 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java
  13. 1 0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java
  14. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceHttpClientImpl.java
  15. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceJoddHttpImpl.java
  16. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java
  17. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpSubscribeMsgServiceImpl.java
  18. 3 3
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
  19. 2 2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java
  20. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java
  21. 3 2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java
  22. 4 4
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInRedisConfigStorage.java
  23. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
  24. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxMpCryptUtil.java
  25. 1 1
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java
  26. 1 1
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/ApiTestModule.java
  27. 2 2
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/TestConfigStorage.java
  28. 2 2
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoInMemoryConfigStorage.java
  29. 1 1
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoServer.java
  30. 1 1
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpEndpointServlet.java
  31. 1 1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java
  32. 1 1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
  33. 1 1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java
  34. 0 1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java

+ 1 - 1
starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpServiceAutoConfiguration.java

@@ -1,6 +1,6 @@
 package com.binarywang.spring.starter.wxjava.mp;
 
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;

+ 8 - 8
starters/wx-java-mp-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/WxMpStorageAutoConfiguration.java

@@ -1,8 +1,8 @@
 package com.binarywang.spring.starter.wxjava.mp;
 
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
-import me.chanjar.weixin.mp.api.WxMpInRedisConfigStorage;
+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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
@@ -34,23 +34,23 @@ public class WxMpStorageAutoConfiguration {
         return getWxMpInMemoryConfigStorage();
     }
 
-    private WxMpInMemoryConfigStorage getWxMpInMemoryConfigStorage() {
-        WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
+    private WxMpDefaultConfigImpl getWxMpInMemoryConfigStorage() {
+        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
         setWxMpInfo(config);
         return config;
     }
 
-    private WxMpInRedisConfigStorage getWxMpInRedisConfigStorage() {
+    private WxMpRedisConfigImpl getWxMpInRedisConfigStorage() {
         JedisPool poolToUse = jedisPool;
         if (poolToUse == null) {
             poolToUse = getJedisPool();
         }
-        WxMpInRedisConfigStorage config = new WxMpInRedisConfigStorage(poolToUse);
+        WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(poolToUse);
         setWxMpInfo(config);
         return config;
     }
 
-    private void setWxMpInfo(WxMpInMemoryConfigStorage config) {
+    private void setWxMpInfo(WxMpDefaultConfigImpl config) {
         config.setAppId(properties.getAppId());
         config.setSecret(properties.getSecret());
         config.setToken(properties.getToken());

+ 5 - 7
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpConfigStorage.java

@@ -14,7 +14,6 @@ public interface WxCpTpConfigStorage {
 
   /**
    * 设置企业微信服务器 baseUrl.
-   *
    * 默认值是 https://qyapi.weixin.qq.com , 如果使用默认值,则不需要调用 setBaseApiUrl
    *
    * @param baseUrl 企业微信服务器 Url
@@ -23,7 +22,6 @@ public interface WxCpTpConfigStorage {
 
   /**
    * 读取企业微信 API Url.
-   *
    * 支持私有化企业微信服务器.
    */
   String getApiUrl(String path);
@@ -33,7 +31,7 @@ public interface WxCpTpConfigStorage {
   boolean isSuiteAccessTokenExpired();
 
   /**
-   * 强制将suite access token过期掉
+   * 强制将suite access token过期掉.
    */
   void expireSuiteAccessToken();
 
@@ -46,15 +44,15 @@ public interface WxCpTpConfigStorage {
   boolean isSuiteTicketExpired();
 
   /**
-   * 强制将suite ticket过期掉
+   * 强制将suite ticket过期掉.
    */
   void expireSuiteTicket();
 
   /**
-   * 应该是线程安全的
+   * 应该是线程安全的.
    */
   void updateSuiteTicket(String suiteTicket, int expiresInSeconds);
-  
+
   String getCorpId();
 
   String getCorpSecret();
@@ -80,7 +78,7 @@ public interface WxCpTpConfigStorage {
   File getTmpDirFile();
 
   /**
-   * http client builder
+   * http client builder.
    *
    * @return ApacheHttpClientBuilder
    */

+ 23 - 19
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpInMemoryConfigStorage.java

@@ -1,45 +1,49 @@
-package me.chanjar.weixin.cp.config;
+package me.chanjar.weixin.cp.config.impl;
 
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.config.WxCpConfigStorage;
 import me.chanjar.weixin.cp.constant.WxCpApiPathConsts;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
 import java.io.File;
+import java.io.Serializable;
 
 /**
- * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
+ * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化.
  *
  * @author Daniel Qian
  */
-public class WxCpInMemoryConfigStorage implements WxCpConfigStorage {
-  protected volatile String corpId;
-  protected volatile String corpSecret;
+public class WxCpDefaultConfigImpl implements WxCpConfigStorage, Serializable {
+  private static final long serialVersionUID = 1154541446729462780L;
 
-  protected volatile String token;
+  private volatile String corpId;
+  private volatile String corpSecret;
+
+  private volatile String token;
   protected volatile String accessToken;
-  protected volatile String aesKey;
+  private volatile String aesKey;
   protected volatile Integer agentId;
-  protected volatile long expiresTime;
+  private volatile long expiresTime;
 
-  protected volatile String oauth2redirectUri;
+  private volatile String oauth2redirectUri;
 
-  protected volatile String httpProxyHost;
-  protected volatile int httpProxyPort;
-  protected volatile String httpProxyUsername;
-  protected volatile String httpProxyPassword;
+  private volatile String httpProxyHost;
+  private volatile int httpProxyPort;
+  private volatile String httpProxyUsername;
+  private volatile String httpProxyPassword;
 
-  protected volatile String jsapiTicket;
-  protected volatile long jsapiTicketExpiresTime;
+  private volatile String jsapiTicket;
+  private volatile long jsapiTicketExpiresTime;
 
-  protected volatile String agentJsapiTicket;
-  protected volatile long agentJsapiTicketExpiresTime;
+  private volatile String agentJsapiTicket;
+  private volatile long agentJsapiTicketExpiresTime;
 
-  protected volatile File tmpDirFile;
+  private volatile File tmpDirFile;
 
   private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
 
-  protected volatile String baseApiUrl;
+  private volatile String baseApiUrl;
 
   @Override
   public void setBaseApiUrl(String baseUrl) {

+ 8 - 7
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpJedisConfigStorage.java

@@ -1,7 +1,8 @@
-package me.chanjar.weixin.cp.config;
+package me.chanjar.weixin.cp.config.impl;
 
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.config.WxCpConfigStorage;
 import me.chanjar.weixin.cp.constant.WxCpApiPathConsts;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
@@ -17,7 +18,7 @@ import java.io.File;
  *
  * @author gaigeshen
  */
-public class WxCpJedisConfigStorage implements WxCpConfigStorage {
+public class WxCpRedisConfigImpl implements WxCpConfigStorage {
   private static final String ACCESS_TOKEN_KEY = "WX_CP_ACCESS_TOKEN";
   private static final String ACCESS_TOKEN_EXPIRES_TIME_KEY = "WX_CP_ACCESS_TOKEN_EXPIRES_TIME";
   private static final String JS_API_TICKET_KEY = "WX_CP_JS_API_TICKET";
@@ -54,23 +55,23 @@ public class WxCpJedisConfigStorage implements WxCpConfigStorage {
     return baseApiUrl + path;
   }
 
-  public WxCpJedisConfigStorage(JedisPool jedisPool) {
+  public WxCpRedisConfigImpl(JedisPool jedisPool) {
     this.jedisPool = jedisPool;
   }
 
-  public WxCpJedisConfigStorage(String host, int port) {
+  public WxCpRedisConfigImpl(String host, int port) {
     jedisPool = new JedisPool(host, port);
   }
 
-  public WxCpJedisConfigStorage(JedisPoolConfig poolConfig, String host, int port) {
+  public WxCpRedisConfigImpl(JedisPoolConfig poolConfig, String host, int port) {
     jedisPool = new JedisPool(poolConfig, host, port);
   }
 
-  public WxCpJedisConfigStorage(JedisPoolConfig poolConfig, String host, int port, int timeout, String password) {
+  public WxCpRedisConfigImpl(JedisPoolConfig poolConfig, String host, int port, int timeout, String password) {
     jedisPool = new JedisPool(poolConfig, host, port, timeout, password);
   }
 
-  public WxCpJedisConfigStorage(JedisPoolConfig poolConfig, String host, int port, int timeout, String password, int database) {
+  public WxCpRedisConfigImpl(JedisPoolConfig poolConfig, String host, int port, int timeout, String password, int database) {
     jedisPool = new JedisPool(poolConfig, host, port, timeout, password, database);
   }
 

+ 31 - 28
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/WxCpTpInMemoryConfigStorage.java

@@ -1,44 +1,47 @@
-package me.chanjar.weixin.cp.config;
+package me.chanjar.weixin.cp.config.impl;
 
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;
 import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
 
 import java.io.File;
+import java.io.Serializable;
 
 /**
- * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化
+ * 基于内存的微信配置provider,在实际生产环境中应该将这些配置持久化.
  *
- * @author Daniel Qian
+ * @author someone
  */
-public class WxCpTpInMemoryConfigStorage implements WxCpTpConfigStorage {
-  protected volatile String corpId;
-  protected volatile String corpSecret;
-  
-  protected volatile String suiteId;
-  protected volatile String suiteSecret;
+public class WxCpTpDefaultConfigImpl implements WxCpTpConfigStorage, Serializable {
+  private static final long serialVersionUID = 6678780920621872824L;
 
-  protected volatile String token;
-  protected volatile String suiteAccessToken;
-  protected volatile String aesKey;
-  protected volatile long expiresTime;
+  private volatile String corpId;
+  private volatile String corpSecret;
 
-  protected volatile String oauth2redirectUri;
+  private volatile String suiteId;
+  private volatile String suiteSecret;
 
-  protected volatile String httpProxyHost;
-  protected volatile int httpProxyPort;
-  protected volatile String httpProxyUsername;
-  protected volatile String httpProxyPassword;
+  private volatile String token;
+  private volatile String suiteAccessToken;
+  private volatile String aesKey;
+  private volatile long expiresTime;
 
-  protected volatile String suiteTicket;
-  protected volatile long suiteTicketExpiresTime;
+  private volatile String oauth2redirectUri;
 
+  private volatile String httpProxyHost;
+  private volatile int httpProxyPort;
+  private volatile String httpProxyUsername;
+  private volatile String httpProxyPassword;
 
-  protected volatile File tmpDirFile;
+  private volatile String suiteTicket;
+  private volatile long suiteTicketExpiresTime;
+
+  private volatile File tmpDirFile;
 
   private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
 
-  protected volatile String baseApiUrl;
+  private volatile String baseApiUrl;
 
   @Override
   public void setBaseApiUrl(String baseUrl) {
@@ -57,7 +60,7 @@ public class WxCpTpInMemoryConfigStorage implements WxCpTpConfigStorage {
   public String getSuiteAccessToken() {
     return this.suiteAccessToken;
   }
-  
+
   public void setSuiteAccessToken(String suiteAccessToken) {
     this.suiteAccessToken = suiteAccessToken;
   }
@@ -82,25 +85,25 @@ public class WxCpTpInMemoryConfigStorage implements WxCpTpConfigStorage {
     this.suiteAccessToken = suiteAccessToken;
     this.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
   }
-  
+
   @Override
   public String getCorpId() {
     return this.corpId;
   }
-  
+
   public void setCorpId(String corpId) {
     this.corpId = corpId;
   }
-  
+
   @Override
   public String getCorpSecret() {
     return this.corpSecret;
   }
-  
+
   public void setCorpSecret(String corpSecret) {
     this.corpSecret = corpSecret;
   }
-  
+
   @Override
   public String getSuiteTicket() {
     return this.suiteTicket;

+ 2 - 2
weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/ApiTestModule.java

@@ -12,7 +12,7 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
 import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
-import me.chanjar.weixin.cp.config.WxCpInMemoryConfigStorage;
+import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
 
 public class ApiTestModule implements Module {
   private final Logger log = LoggerFactory.getLogger(this.getClass());
@@ -44,7 +44,7 @@ public class ApiTestModule implements Module {
   }
 
   @XStreamAlias("xml")
-  public static class WxXmlCpInMemoryConfigStorage extends WxCpInMemoryConfigStorage {
+  public static class WxXmlCpInMemoryConfigStorage extends WxCpDefaultConfigImpl {
 
     protected String userId;
 

+ 2 - 2
weixin-java-cp/src/test/java/me/chanjar/weixin/cp/demo/WxCpDemoInMemoryConfigStorage.java

@@ -6,14 +6,14 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.ToString;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.cp.config.WxCpInMemoryConfigStorage;
+import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
 
 /**
  * @author Daniel Qian
  */
 @XStreamAlias("xml")
 @ToString
-public class WxCpDemoInMemoryConfigStorage extends WxCpInMemoryConfigStorage {
+public class WxCpDemoInMemoryConfigStorage extends WxCpDefaultConfigImpl {
   public static WxCpDemoInMemoryConfigStorage fromXml(InputStream is) {
     XStream xstream = XStreamInitializer.getInstance();
     xstream.processAnnotations(WxCpDemoInMemoryConfigStorage.class);

+ 23 - 21
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java

@@ -1,9 +1,10 @@
-package cn.binarywang.wx.miniapp.config;
+package cn.binarywang.wx.miniapp.config.impl;
 
 import java.io.File;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
@@ -13,38 +14,39 @@ import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
-public class WxMaInMemoryConfig implements WxMaConfig {
-  protected volatile String msgDataFormat;
+public class WxMaDefaultConfigImpl implements WxMaConfig {
+  private volatile String msgDataFormat;
   protected volatile String appid;
-  protected volatile String secret;
+  private volatile String secret;
   protected volatile String token;
-  protected volatile String accessToken;
-  protected volatile String aesKey;
-  protected volatile long expiresTime;
+  private volatile String accessToken;
+  private volatile String aesKey;
+  private volatile long expiresTime;
 
-  protected volatile String httpProxyHost;
-  protected volatile int httpProxyPort;
-  protected volatile String httpProxyUsername;
-  protected volatile String httpProxyPassword;
+  private volatile String httpProxyHost;
+  private volatile int httpProxyPort;
+  private volatile String httpProxyUsername;
+  private volatile String httpProxyPassword;
 
-  protected volatile String jsapiTicket;
-  protected volatile long jsapiTicketExpiresTime;
-
-  //微信卡券的ticket单独缓存
-  protected volatile String cardApiTicket;
-  protected volatile long cardApiTicketExpiresTime;
+  private volatile String jsapiTicket;
+  private volatile long jsapiTicketExpiresTime;
 
+  /**
+   * 微信卡券的ticket单独缓存.
+   */
+  private volatile String cardApiTicket;
+  private volatile long cardApiTicketExpiresTime;
 
   protected Lock accessTokenLock = new ReentrantLock();
-  protected Lock jsapiTicketLock = new ReentrantLock();
-  protected Lock cardApiTicketLock = new ReentrantLock();
+  private Lock jsapiTicketLock = new ReentrantLock();
+  private Lock cardApiTicketLock = new ReentrantLock();
 
   /**
-   * 临时文件目录
+   * 临时文件目录.
    */
   protected volatile File tmpDirFile;
 
-  protected volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
+  private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
 
   @Override
   public String getAccessToken() {

+ 140 - 167
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInRedisConfig.java

@@ -1,4 +1,4 @@
-package cn.binarywang.wx.miniapp.config;
+package cn.binarywang.wx.miniapp.config.impl;
 
 import java.io.File;
 import java.util.HashMap;
@@ -7,6 +7,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 
+import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import com.github.jedis.lock.JedisLock;
 
 import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
@@ -17,105 +18,92 @@ import redis.clients.jedis.JedisPool;
 
 /**
  * 基于Redis的微信配置provider.
- * 
+ *
  * <pre>
  * 需要引入依赖<a href="https://github.com/abelaska/jedis-lock">jedis-lock</a>,才能使用该类。
  * </pre>
  *
  * @author <a href="https://github.com/winter4666">winter</a>
  */
-public class WxMaInRedisConfig implements WxMaConfig {
-	
+public class WxMaRedisConfigImpl implements WxMaConfig {
   private static final String ACCESS_TOKEN = "accessToken";
   private static final String JSAPI_TICKET = "jsapiTicket";
   private static final String CARD_API_TICKET = "cardApiTicket";
-  
+
   private static final String HASH_VALUE_FIELD = "value";
   private static final String HASH_EXPIRE_FIELD = "expire";
-	
-  protected JedisPool jedisPool;
+
+  private JedisPool jedisPool;
   /**
-   * 微信小程序唯一id,用于拼接存储到redis时的key,防止key重复
+   * 微信小程序唯一id,用于拼接存储到redis时的key,防止key重复.
    */
-  protected String maId;
-	
-  protected volatile String msgDataFormat;
+  private String maId;
+
+  private volatile String msgDataFormat;
   protected volatile String appid;
-  protected volatile String secret;
+  private volatile String secret;
   protected volatile String token;
-  protected volatile String aesKey;
+  private volatile String aesKey;
 
-  protected volatile String httpProxyHost;
-  protected volatile int httpProxyPort;
-  protected volatile String httpProxyUsername;
-  protected volatile String httpProxyPassword;
+  private volatile String httpProxyHost;
+  private volatile int httpProxyPort;
+  private volatile String httpProxyUsername;
+  private volatile String httpProxyPassword;
 
-  protected Lock accessTokenLock;
-  protected Lock jsapiTicketLock;
-  protected Lock cardApiTicketLock;
+  private Lock accessTokenLock;
+  private Lock jsapiTicketLock;
+  private Lock cardApiTicketLock;
 
   /**
-   * 临时文件目录
+   * 临时文件目录.
    */
   protected volatile File tmpDirFile;
 
-  protected volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
-  
+  private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
+
   private String getRedisKey(String key) {
-	StringBuilder redisKey = new StringBuilder("maConfig:");
-	if(maId == null) {
-	  return redisKey.append(key).toString();	  
-	} else {
-	  return redisKey.append(maId).append(":").append(key).toString();
-	}
-  }
-  
+    StringBuilder redisKey = new StringBuilder("maConfig:");
+    if (maId == null) {
+      return redisKey.append(key).toString();
+    } else {
+      return redisKey.append(maId).append(":").append(key).toString();
+    }
+  }
+
   private String getValueFromRedis(String key) {
-  	Jedis jedis = jedisPool.getResource();
-  	try {
+    try (Jedis jedis = jedisPool.getResource()) {
       return jedis.hget(getRedisKey(key), HASH_VALUE_FIELD);
-  	} finally {
-  	  jedis.close();
-  	}
+    }
   }
-	
+
   private void setValueToRedis(String key, long expiresTime, String value) {
-  	Jedis jedis = jedisPool.getResource();
-  	try {
-  	  Map<String, String> hash = new HashMap<String, String>();
-  	  hash.put(HASH_VALUE_FIELD, value);
-  	  hash.put(HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
-  	  jedis.hmset(getRedisKey(key), hash);
-  	} finally {
-  	  jedis.close();
-  	}
-  }
-  
+    try (Jedis jedis = jedisPool.getResource()) {
+      Map<String, String> hash = new HashMap<String, String>();
+      hash.put(HASH_VALUE_FIELD, value);
+      hash.put(HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
+      jedis.hmset(getRedisKey(key), hash);
+    }
+  }
+
   private long getExpireFromRedis(String key) {
-  	Jedis jedis = jedisPool.getResource();
-  	try {
+    try (Jedis jedis = jedisPool.getResource()) {
       String expire = jedis.hget(getRedisKey(key), HASH_EXPIRE_FIELD);
-      return expire == null ? 0 : Long.valueOf(expire);
-  	} finally {
-  	  jedis.close();
-  	}
+      return expire == null ? 0 : Long.parseLong(expire);
+    }
   }
-  
+
   private void setExpire(String key, long expiresTime) {
-  	Jedis jedis = jedisPool.getResource();
-  	try {
-  	  jedis.hset(getRedisKey(key), HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
-  	} finally {
-  	  jedis.close();
-  	}
+    try (Jedis jedis = jedisPool.getResource()) {
+      jedis.hset(getRedisKey(key), HASH_EXPIRE_FIELD, String.valueOf(expiresTime));
+    }
   }
 
   public void setJedisPool(JedisPool jedisPool) {
-	this.jedisPool = jedisPool;
+    this.jedisPool = jedisPool;
   }
 
   public void setMaId(String maId) {
-	this.maId = maId;
+    this.maId = maId;
   }
 
   @Override
@@ -125,19 +113,19 @@ public class WxMaInRedisConfig implements WxMaConfig {
 
   @Override
   public Lock getAccessTokenLock() {
-	if(accessTokenLock == null) {
-	  synchronized (this) {
-		if(accessTokenLock == null) {
-		  accessTokenLock = new DistributedLock(getRedisKey("accessTokenLock")); 
-		}
-	  }
-	}
+    if (accessTokenLock == null) {
+      synchronized (this) {
+        if (accessTokenLock == null) {
+          accessTokenLock = new DistributedLock(getRedisKey("accessTokenLock"));
+        }
+      }
+    }
     return accessTokenLock;
   }
 
   @Override
   public boolean isAccessTokenExpired() {
-    return System.currentTimeMillis() >  getExpireFromRedis(ACCESS_TOKEN);
+    return System.currentTimeMillis() > getExpireFromRedis(ACCESS_TOKEN);
   }
 
   @Override
@@ -147,7 +135,7 @@ public class WxMaInRedisConfig implements WxMaConfig {
 
   @Override
   public synchronized void updateAccessToken(String accessToken, int expiresInSeconds) {
-	setValueToRedis(ACCESS_TOKEN, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, accessToken);
+    setValueToRedis(ACCESS_TOKEN, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, accessToken);
   }
 
   @Override
@@ -157,30 +145,30 @@ public class WxMaInRedisConfig implements WxMaConfig {
 
   @Override
   public Lock getJsapiTicketLock() {
-	if(jsapiTicketLock == null) {
-	  synchronized (this) {
-		if(jsapiTicketLock == null) {
-		  jsapiTicketLock = new DistributedLock(getRedisKey("jsapiTicketLock")); 
-		}
-	  }
-	}
+    if (jsapiTicketLock == null) {
+      synchronized (this) {
+        if (jsapiTicketLock == null) {
+          jsapiTicketLock = new DistributedLock(getRedisKey("jsapiTicketLock"));
+        }
+      }
+    }
     return jsapiTicketLock;
   }
 
   @Override
   public boolean isJsapiTicketExpired() {
-	return System.currentTimeMillis() >  getExpireFromRedis(JSAPI_TICKET);
+    return System.currentTimeMillis() > getExpireFromRedis(JSAPI_TICKET);
   }
 
   @Override
   public void expireJsapiTicket() {
-	setExpire(JSAPI_TICKET, 0);
+    setExpire(JSAPI_TICKET, 0);
   }
 
   @Override
   public void updateJsapiTicket(String jsapiTicket, int expiresInSeconds) {
-	// 预留200秒的时间
-	setValueToRedis(JSAPI_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, jsapiTicket);
+    // 预留200秒的时间
+    setValueToRedis(JSAPI_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, jsapiTicket);
   }
 
 
@@ -191,34 +179,34 @@ public class WxMaInRedisConfig implements WxMaConfig {
 
   @Override
   public Lock getCardApiTicketLock() {
-	if(cardApiTicketLock == null) {
-	  synchronized (this) {
-		if(cardApiTicketLock == null) {
-		  cardApiTicketLock = new DistributedLock(getRedisKey("cardApiTicketLock")); 
-		}
-	  }
-	}
+    if (cardApiTicketLock == null) {
+      synchronized (this) {
+        if (cardApiTicketLock == null) {
+          cardApiTicketLock = new DistributedLock(getRedisKey("cardApiTicketLock"));
+        }
+      }
+    }
     return cardApiTicketLock;
   }
 
   @Override
   public boolean isCardApiTicketExpired() {
-	return System.currentTimeMillis() >  getExpireFromRedis(CARD_API_TICKET);
+    return System.currentTimeMillis() > getExpireFromRedis(CARD_API_TICKET);
   }
 
   @Override
   public void expireCardApiTicket() {
-	setExpire(CARD_API_TICKET, 0);
+    setExpire(CARD_API_TICKET, 0);
   }
 
   @Override
   public void updateCardApiTicket(String cardApiTicket, int expiresInSeconds) {
-	setValueToRedis(CARD_API_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, cardApiTicket);
+    setValueToRedis(CARD_API_TICKET, System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L, cardApiTicket);
   }
 
   @Override
   public void expireAccessToken() {
-	setExpire(ACCESS_TOKEN, 0);
+    setExpire(ACCESS_TOKEN, 0);
   }
 
   @Override
@@ -241,7 +229,7 @@ public class WxMaInRedisConfig implements WxMaConfig {
 
   @Override
   public long getExpiresTime() {
-	return getExpireFromRedis(ACCESS_TOKEN);
+    return getExpireFromRedis(ACCESS_TOKEN);
   }
 
   @Override
@@ -325,80 +313,65 @@ public class WxMaInRedisConfig implements WxMaConfig {
   public void setAppid(String appid) {
     this.appid = appid;
   }
-  
+
   /**
-   * 基于redis的简单分布式锁
+   * 基于redis的简单分布式锁.
    */
   private class DistributedLock implements Lock {
-	
-	private JedisLock lock;
-	
-	private DistributedLock(String key) {
-	  this.lock = new JedisLock(getRedisKey(key));
-	}
-
-	@Override
-	public void lock() {
-	  Jedis jedis = jedisPool.getResource();
-	  try {
-		if(!lock.acquire(jedis)) {
-		  throw new RuntimeException("acquire timeouted");
-		}
-	  } catch (InterruptedException e) {
-	    throw new RuntimeException("lock failed",e);
-	  } finally {
-		jedis.close();
-	  }
-	}
-
-	@Override
-	public void lockInterruptibly() throws InterruptedException {
-	  Jedis jedis = jedisPool.getResource();
-	  try {
-		if(!lock.acquire(jedis)) {
-		  throw new RuntimeException("acquire timeouted");
-		}
-	  } finally {
-		jedis.close();
-	  }
-	}
-
-	@Override
-	public boolean tryLock() {
-	  Jedis jedis = jedisPool.getResource();
-	  try {
-		return lock.acquire(jedis);
-	  } catch (InterruptedException e) {
-	    throw new RuntimeException("lock failed",e);
-	  } finally {
-		jedis.close();
-	  }
-	}
-
-	@Override
-	public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
-	  Jedis jedis = jedisPool.getResource();
-	  try {
-		return lock.acquire(jedis);
-	  } finally {
-		jedis.close();
-	  }
-	}
-
-	@Override
-	public void unlock() {
-	  Jedis jedis = jedisPool.getResource();
-	  try {
-		lock.release(jedis);
-	  } finally {
-		jedis.close();
-	  }
-	}
-
-	@Override
-	public Condition newCondition() {
-	  throw new RuntimeException("unsupported method");
-	}
-	  
+
+    private JedisLock lock;
+
+    private DistributedLock(String key) {
+      this.lock = new JedisLock(getRedisKey(key));
+    }
+
+    @Override
+    public void lock() {
+      try (Jedis jedis = jedisPool.getResource()) {
+        if (!lock.acquire(jedis)) {
+          throw new RuntimeException("acquire timeouted");
+        }
+      } catch (InterruptedException e) {
+        throw new RuntimeException("lock failed", e);
+      }
+    }
+
+    @Override
+    public void lockInterruptibly() throws InterruptedException {
+      try (Jedis jedis = jedisPool.getResource()) {
+        if (!lock.acquire(jedis)) {
+          throw new RuntimeException("acquire timeouted");
+        }
+      }
+    }
+
+    @Override
+    public boolean tryLock() {
+      try (Jedis jedis = jedisPool.getResource()) {
+        return lock.acquire(jedis);
+      } catch (InterruptedException e) {
+        throw new RuntimeException("lock failed", e);
+      }
+    }
+
+    @Override
+    public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
+      try (Jedis jedis = jedisPool.getResource()) {
+        return lock.acquire(jedis);
+      }
+    }
+
+    @Override
+    public void unlock() {
+      try (Jedis jedis = jedisPool.getResource()) {
+        lock.release(jedis);
+      }
+    }
+
+    @Override
+    public Condition newCondition() {
+      throw new RuntimeException("unsupported method");
+    }
+
   }
 }

+ 2 - 2
weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/test/TestConfig.java

@@ -1,6 +1,6 @@
 package cn.binarywang.wx.miniapp.test;
 
-import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
@@ -13,7 +13,7 @@ import java.util.concurrent.locks.Lock;
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
 @XStreamAlias("xml")
-public class TestConfig extends WxMaInMemoryConfig {
+public class TestConfig extends WxMaDefaultConfigImpl {
 
   private String openid;
   private String kfAccount;

+ 1 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java

@@ -10,6 +10,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpCurrentAutoReplyInfo;
 import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
 import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
 import me.chanjar.weixin.mp.bean.result.WxMpUser;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.enums.TicketType;
 import me.chanjar.weixin.mp.enums.WxMpApiUrl;
 

+ 1 - 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java

@@ -22,6 +22,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpCurrentAutoReplyInfo;
 import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
 import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
 import me.chanjar.weixin.mp.bean.result.WxMpUser;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.enums.TicketType;
 import me.chanjar.weixin.mp.enums.WxMpApiUrl;
 import me.chanjar.weixin.mp.util.WxMpConfigStorageHolder;

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceHttpClientImpl.java

@@ -7,7 +7,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.http.HttpType;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
 import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import org.apache.http.HttpHost;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.methods.CloseableHttpResponse;

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceJoddHttpImpl.java

@@ -7,7 +7,7 @@ import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.http.HttpType;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 
 import java.util.concurrent.locks.Lock;
 

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java

@@ -6,7 +6,7 @@ import me.chanjar.weixin.common.error.WxError;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.http.HttpType;
 import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import okhttp3.*;
 
 import java.io.IOException;

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpSubscribeMsgServiceImpl.java

@@ -3,7 +3,7 @@ package me.chanjar.weixin.mp.api.impl;
 import lombok.RequiredArgsConstructor;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.common.util.http.URIUtil;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.WxMpSubscribeMsgService;
 import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage;

+ 3 - 3
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java

@@ -15,7 +15,7 @@ import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.util.XmlUtils;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
 import me.chanjar.weixin.mp.util.xml.XStreamTransformer;
@@ -527,10 +527,10 @@ public class WxMpXmlMessage implements Serializable {
   @XStreamAlias("DeviceID")
   @XStreamConverter(value = XStreamCDataConverter.class)
   private String deviceId;
-  
+
   /**
    * 微信客户端生成的session id,用于request和response对应,
-   * 因此响应中该字段第三方需要原封不变的带回 
+   * 因此响应中该字段第三方需要原封不变的带回
    */
   @XStreamAlias("SessionID")
   @XStreamConverter(value = XStreamCDataConverter.class)

+ 2 - 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java

@@ -4,7 +4,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 import lombok.Data;
 import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.builder.outxml.*;
 import me.chanjar.weixin.mp.util.crypto.WxMpCryptUtil;
 import me.chanjar.weixin.mp.util.xml.XStreamTransformer;
@@ -79,7 +79,7 @@ public abstract class WxMpXmlOutMessage implements Serializable {
   public static TransferCustomerServiceBuilder TRANSFER_CUSTOMER_SERVICE() {
     return new TransferCustomerServiceBuilder();
   }
-  
+
   /**
    * 获得设备消息builder
    */

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java

@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.config;
 
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;

+ 3 - 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java

@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.config.impl;
 
 import java.io.File;
 import java.io.Serializable;
@@ -8,6 +8,7 @@ import java.util.concurrent.locks.ReentrantLock;
 import lombok.Data;
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.bean.WxMpHostConfig;
 import me.chanjar.weixin.mp.enums.TicketType;
 import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -18,7 +19,7 @@ import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
  * @author chanjarster
  */
 @Data
-public class WxMpInMemoryConfigStorage implements WxMpConfigStorage, Serializable {
+public class WxMpDefaultConfigImpl implements WxMpConfigStorage, Serializable {
   private static final long serialVersionUID = -6646519023303395185L;
 
   protected volatile String appId;

+ 4 - 4
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInRedisConfigStorage.java

@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.config.impl;
 
 import me.chanjar.weixin.mp.enums.TicketType;
 import redis.clients.jedis.Jedis;
@@ -15,17 +15,17 @@ import redis.clients.jedis.JedisPool;
  * @author nickwong
  */
 @SuppressWarnings("hiding")
-public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
+public class WxMpRedisConfigImpl extends WxMpDefaultConfigImpl {
   private static final String ACCESS_TOKEN_KEY = "wx:access_token:";
 
   /**
    * 使用连接池保证线程安全.
    */
-  protected final JedisPool jedisPool;
+  private final JedisPool jedisPool;
 
   private String accessTokenKey;
 
-  public WxMpInRedisConfigStorage(JedisPool jedisPool) {
+  public WxMpRedisConfigImpl(JedisPool jedisPool) {
     this.jedisPool = jedisPool;
   }
 

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java

@@ -1,7 +1,7 @@
 package me.chanjar.weixin.mp.enums;
 
 import lombok.AllArgsConstructor;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 
 import static me.chanjar.weixin.mp.bean.WxMpHostConfig.*;
 

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxMpCryptUtil.java

@@ -17,7 +17,7 @@
  */
 package me.chanjar.weixin.mp.util.crypto;
 
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import org.apache.commons.codec.binary.Base64;
 
 public class WxMpCryptUtil extends me.chanjar.weixin.common.util.crypto.WxCryptUtil {

+ 1 - 1
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImplTest.java

@@ -7,7 +7,7 @@ import org.testng.annotations.*;
 import com.google.inject.Inject;
 import me.chanjar.weixin.common.api.WxConsts;
 import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.test.ApiTestModule;
 import me.chanjar.weixin.mp.api.test.TestConfigStorage;

+ 1 - 1
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/ApiTestModule.java

@@ -12,7 +12,7 @@ import com.google.inject.Binder;
 import com.google.inject.Module;
 import com.thoughtworks.xstream.XStream;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 
 public class ApiTestModule implements Module {

+ 2 - 2
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/test/TestConfigStorage.java

@@ -1,13 +1,13 @@
 package me.chanjar.weixin.mp.api.test;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.util.concurrent.locks.Lock;
 
 @XStreamAlias("xml")
-public class TestConfigStorage extends WxMpInMemoryConfigStorage {
+public class TestConfigStorage extends WxMpDefaultConfigImpl {
 
   private String openid;
   private String kfAccount;

+ 2 - 2
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoInMemoryConfigStorage.java

@@ -6,13 +6,13 @@ import java.util.concurrent.locks.ReentrantLock;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import me.chanjar.weixin.common.util.xml.XStreamInitializer;
-import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
 
 /**
  * @author Daniel Qian
  */
 @XStreamAlias("xml")
-class WxMpDemoInMemoryConfigStorage extends WxMpInMemoryConfigStorage {
+class WxMpDemoInMemoryConfigStorage extends WxMpDefaultConfigImpl {
   private static final long serialVersionUID = -3706236839197109704L;
 
   public static WxMpDemoInMemoryConfigStorage fromXml(InputStream is) {

+ 1 - 1
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpDemoServer.java

@@ -1,7 +1,7 @@
 package me.chanjar.weixin.mp.demo;
 
 import me.chanjar.weixin.common.api.WxConsts;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpMessageHandler;
 import me.chanjar.weixin.mp.api.WxMpMessageRouter;
 import me.chanjar.weixin.mp.api.WxMpService;

+ 1 - 1
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxMpEndpointServlet.java

@@ -1,6 +1,6 @@
 package me.chanjar.weixin.mp.demo;
 
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpMessageRouter;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

+ 1 - 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java

@@ -2,7 +2,7 @@ package me.chanjar.weixin.open.api;
 
 import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
 import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken;
 

+ 1 - 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java

@@ -10,7 +10,7 @@ import java.util.concurrent.locks.ReentrantLock;
 import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.bean.WxMpHostConfig;
 import me.chanjar.weixin.mp.enums.TicketType;
 import me.chanjar.weixin.open.api.WxOpenConfigStorage;

+ 1 - 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java

@@ -1,7 +1,7 @@
 package me.chanjar.weixin.open.api.impl;
 
 import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
+import me.chanjar.weixin.mp.config.WxMpConfigStorage;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
 import me.chanjar.weixin.open.api.WxOpenComponentService;

+ 0 - 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java

@@ -6,7 +6,6 @@ import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
 import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
 import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
-import me.chanjar.weixin.mp.api.WxMpConfigStorage;
 import me.chanjar.weixin.open.api.WxOpenConfigStorage;
 import org.apache.http.HttpHost;
 import org.apache.http.impl.client.CloseableHttpClient;