1.读取application.yml文件中的数值,格式非常重要,value和key后面的冒号之间必须加一空格,否则读取不到
2.使用com.baomidou.mybatisplus.mapper.EntityWrapper,设置查询条件之后只能使用selectMaps,无法使用selectList,不知道为什么
3.记一次粗心大意,获取post请求里面的json数据,一直获取失败,还尝试了使用流的方式读取,代码里没有stream close操作,却还报流closed,最终发现是自己限制了请求头里content-length为97,而json数据长度超过了,一直没好好理解这个字段的意义,还请领导帮忙找了好长时间问题,希望以后注意...
4.在普通类中无法注入dao或者bean,只是使用@Resource没用,需要
private static RedisUtils redisUtils;
private static DeviceDao deviceDao;
@SuppressWarnings( "static-access" )
@Autowired
public void setOperationInfo( RedisUtils redisUtils, DeviceDao deviceDao ) {
this.redisUtils = redisUtils;
this.deviceDao = deviceDao;
}
这样引用就好啦
5.使用templates模板解析的时候,一直报解析异常,添加后缀suffix之后正常(主要是本地没问题,线上才出错,不上线根本发现不了问题),解决办法:
spring:
#thymeleaf
thymeleaf:
prefix:
classpath: /templates/
suffix: .ftl
6.接上面,正常解析之后,页面中的el表达式无法获取到传到前面的数据,还是本地没问题,生产环境不行,大概经过两天的折腾,增加了thymeleaf配置:mode: HTML5 encoding: UTF-8 content-type: text/html cache: false,同时修改了页面<head><meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html"></head>一开始只是使用value=${state}改成了<input name="state" type="hidden" th:value="${state}" id="state"/>最终成功获取到数据! --->2018/9/27
7.mybatis生成的xml文件中,有的表必须加上`table`两个单引号,否则会出现最后一个字段缺失一部分,类似:isclose-->iscl
最终发现是数据库中mysql的关键字的原因,可能表名用了'admin'等类似可能数据库敏感的字段,修改之后ok了.
8.springcloud中的问题:由于使用Hystrix 线程隔离导致ThreadLocal数据丢失,看了一些博客,暂时无法移植过来,所以放弃改用header了
9.filter无法注入StringRedisTemplate---->
@Autowired
private StringRedisTemplate template;
用的时候赋值:template = ApplicationContextHelper.popBean(StringRedisTemplate.class);通过上下文获取.
10问题同8类似,网关转发之后不是同一个线程,但是request里的header没有变化,所以8可以这样解决,现在碰到的是服务之间的调用,比如服务A调用服务B,没想到它不经过网关,而且经过服务B的filter之后,里面的request已经不存在header信息了,好在token的验证已经放在了gateway里面,因此我在服务B中做了判断:request中没有header信息的直接放行,虽然解决方法很low,但效果感觉还不错,减少了再进入服务B内部消耗的时间.可以说,网关和各个服务的设计模式使得我可以使用这种方法解决问题,要是服务之间调用的时候需要重新经过网关,同时request中的header信息还不再存在的话,我说不得只能考虑阿里的transmittable-thread-local来改造线程池了(不知道可不可以...)
11.springboot集成jpa的时候,版本2.1.1会报错无法创建entityManager,换成1.5.8可以正常使用,不清楚为什么...