关于IAccountDataProvider的默认实现
1、问题:DefaultAccountDataProvider中
if (_accessToken == null || (_currentTime >= _accessToken.getLong("expires_time"))) {
_accessToken = WeChat.__doCheckJsonResult(HttpClientHelper.doGet(WX_API.WX_ACCESS_TOKEN.concat("&appid=") + getAppId(accountId) + "&secret=" + getAppSecret(accountId), true));
_accessToken.put("expires_time", _currentTime + _accessToken.getIntValue("expires_in") * 1000);
__CACHES.put("WX_ACCESS_TOKEN", _accessToken);
这个 __CACHES put的 key是 WX_ACCESS_TOKEN 后面get 的时候 却是用 accountId 算是bug吧
2、建议:DefaultAccountDataProvider 中 关于多账号的 Map __accountCahces
目前是初始化一个,虽然重新这个方法可以 实现初始化多个,但是,如果中途需要增加 accountId 就比较麻烦
建议 将这个接口 也封装出来, 可以 通过 Wechat 这个类 来增加 新的 accountId
因为如果放在正式项目中用的话,如果是多账号系统 accountId 肯定是 会动态变化的
3、这个和微信无关,是本身 ymp平台的---建议将 模块配置的配置文件按照模块拆分,每个模块一个 配置文件
在特定目录下增加一个 配置文件就增加一个模块,每个配置文件必须有一个 加载类的配置项,其他根据需要自行增加,这样会让项目更灵活。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
@南平狼 您好,首先感谢您对YMP的关注和支持!
问题1:所指出的问题的确是个BUG,已修正,代码会尽快提交;
问题2:DefaultAccountDataProvider类只是一个IAccountDataProvider接口的简单实现,本意只想让它支持单一帐号,而由开发者通过重写IAccountDataProvider接口去实现多帐号管理,之所以没有在模块中没有提供多帐号实现的原因是我们不能确定开发者具体所采用的缓存机制和存储方式等,您提出的这个可以动态添加帐号的想法很好,我会结合您的想法对接口进行调整;
问题3:YMP平台的模块之所以没有对配置文件进行分离是因为模块的使用是在开发阶段确定的,几乎不会有频繁变化的可能,同时也是减少配置文件数量和统一配置书写格式的一个理由哈(YMP号称就一个配置文件~:p),如果你希望加载特定目录下的模块配置等资源,可以试试YMP框架提供的Plugin机制(参考:插件模块使用),它一样非常灵活,您可以创建N多的插件工厂对象并指定任意不同的资源路径来达到让项目更灵活的目的。