FAQ


如何绕过网关直接通过具体服务地址访问swagger在线文档

在服务中添加以下配置:

  • authorization.enable: false
  • authorization.validator-filter-enable: false
  • authorization.permission-filter-enable: false
  • client.gateway.disable: true

如何访问swagger在线文档

微服务版本(Zuul网关聚合)

  • 原生UI:http://[ip]:[port]/swagger-ui.html ;
  • Bootstrap UI3.3.8+:http://[ip]:[port]/doc.html ;
  • ip:网关服务器IP;
  • port:网关端口;

微服务版本(Gateway非聚合)3.3.8+

  • 原生UI
    • http://[ip]:[port]/ibps/oauth2/v3/swagger-ui.html ;
    • http://[ip]:[port]/ibps/platform/v3/swagger-ui.html ;
    • http://[ip]:[port]/ibps/business/v3/swagger-ui.html ;
  • Bootstrap UI
    • http://[ip]:[port]/ibps/oauth2/v3/doc.html ;
    • http://[ip]:[port]/ibps/platform/v3/doc.html ;
    • http://[ip]:[port]/ibps/business/v3/doc.html ;
  • ip:网关服务器IP;
  • port:网关端口;

单体版本

  • 原生UI:http://[ip]:[port]/swagger-ui.html ;
  • Bootstrap UI3.3.8+:http://[ip]:[port]/doc.html ;
  • ip:应用服务器IP;
  • port:网关端口;

使用缓存时如何解决第一次和第二次查询数据不一致

特征:清除缓存后,第一次数据加载正确,后续数据就出现了不一致的情况;

原因:系统中使用缓存,系统会优先查找缓存数据,如果缓存中没有才进行数据库查询;第一次查询时Repository返回数据,并且将数据放在内存中,返回数据的引用,后续代码通过这个引用对数据进行修改,导致缓存中的数据被修改;第二次再查询由于缓存中已经有数据,所以直接返回缓存中的数据,但返回的是数据已经被第一次查询后作了修改,跟第一次返回就产生了差异。

解决方法:将Repository返回的数据进行深层次复制,不使用原数据引用,避免缓存原数据被修改。

  • 如果是Object对象,使用以下代码进行复制:
    P po = (P)com.lc.ibps.base.core.util.BeanUtils.copyNotNullProperties(p.getClass(), p);
  • 如果是列表对象,使用以下代码进行复制:
    List<BpmApprovePo> result = com.lc.ibps.base.core.util.Collections.deepCopy(list);

例子:

    // 仓库查询数据
    List<BpmApprovePo> list = bpmApproveRepository.getByInstId(procInstId);
    // 通过深层次复制对象,提供后续使用
    List<BpmApprovePo> result = com.lc.ibps.base.core.util.Collections.deepCopy(list);
    // 过滤任务已经代理出去并且看不见的人
    filterAgent(result);

oracle里插入空字符串会被转成null插入

会造成某些不可知的异常

限流与熔断的区别

  • 限流是超出请求数量配置限额,不允许接受请求抛出异常;
  • 熔断是时间窗口内接受请求一定数量并且错误率达到阈值抛出异常;

MySQLSyntaxErrorException: Can’t find any matching row in the user table

  • 原语句grant select,insert,update,delete,create on ibps_saas_dev_csy_ibps_business_provider.* to root;
  • 修改为grant select,insert,update,delete,create on ibps_saas_dev_csy_ibps_business_provider.* to root identified by '你的密码';

解决[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

  • my.cnf或my.ini文件添加sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

使用MySQL8驱动连接MySQL8以下版本时需要设置服务端事务级别

* 修改前 REPEATABLE-READ
* 修改后 READ-COMMITTED
* 全局修改 set global tx_isolation='READ-COMMITTED';
文档更新时间: 2021-04-14 17:56   作者:Eddy