SpringClould实战 - 图1
请像对待每一行代码一样对待每篇文章 —- 鹰嘴豆

学习目标


开始学习


初学者之惑

  1. springboot后台返回Json时指定时间格式,有以下两种办法
    第一种可以执行在转化的POJO类中增加注解 ```java @JsonFormat(timezone = “GMT+8”, pattern = “yyyyMMddHHmmss”)

private Date createTime;

  1. 第二种直接在配置文件中全局指定

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 ```

  1. springboot后台校验。不仅前端需要校验,后台也需要校验,防止http请求伪造发杂乱数据导致数据库报错,springboot如何实现?
    使用JSR-303注解,它是JavaEE 6中的Bean Validation规范,需要依赖的包:JDK的接口validation-api-1.0.0.GA.jar;
    hibernate-validator-4.2.0.Final.jar是javax.validation 没有的一些注解补充。 springboot只需要引入spring-boot-starter-web 即可,链接:JSR-303 链接:注解分类详解
    如@Email如果字段为空则不校验,不为空则校验,@Pattern正则字段为””也会去校验,要具体看校验规则类是如何实现
    可以自定义实现注解,自定义逻辑指定内容是否有效具体参考链接:自定义注解
    校验不通过抛出校验异常及自定义的校验不通过信息该如何在全局异常中抛到客户端? 现在在全局异常中捕捉到的是异常链的最上层而不是异常链最初出校验不通过的那个异常

  2. springboot打包成一个war包。因为springboot内嵌了一个tomcat,每次重新启动都是一个新的tomcat服务器,当我们上传文件保存在项目中那么重启服务器的时候文件丢失,同时外部的一个软件需要写文件到tomcat中可以被http访问到。为了实现上面的功能需要将springboot从jar包变成war放到tomcat中。链接:修改方法 在启动时会导致jar包冲突,链接:el-api冲突
    war包放到tomcat下以后如何在浏览器访问?在springboot属性文件中指定的context-path/port都失效了,需要参考当前tomcat启动后解压的war包名字以及tomcat的server.xml中配置的端口号,比如http://localhost:[端口号]/[打包项目名]/

  3. feign 启用熔断,但是没有写fallback则会报 ServerAuthFeign#loadUserByUserName(String) failed and no fallback available.的异常。具体参考:https://my.oschina.net/xiaominmin/blog/2986631

  4. feign为请求增加请求头的办法:实现feign的拦截器,参考:https://blog.csdn.net/lidai352710967/article/details/88680173,注意如果feign有个策略模式,如果模式选择不对,会在拦截器中拿不到属性:https://blog.csdn.net/crystalqy/article/details/79083857
  5. feign对其他服务异常的处理:https://my.oschina.net/xiaominmin/blog/2986631
  6. springboot拦截器会执行两次的原因有如下: Filter接口的拦截器实现类在@Configuration中增加了@Bean,又在springsecurity的拦截其中加入这个拦截器实现类,所以执行两次; springboot错误页面/error 请求会被拦截器拦截,再一次为这个error执行拦截器
  7. springboot怎么不要默认的错误页面,例如401,403 404的报错页面,reponse.sendError会引起/error的默认错误页面请求,重新执行一次拦截器链,因此解决思路是增加一个拦截器,过滤/error的页面路径
  8. feign超时与hystrix的超时,feign中的hystrx超时会有重试机制,在feign没有超时而hystrix超时了的情况下,被调用的服务执行多次,解决办法设置合理的feign超时时间和hystrix的超时时间,hystrix超时时间大于feign,要考虑它的重试次数*feign超时时间,参考https://coding.m.imooc.com/questiondetail.html?qid=83954https://blog.csdn.net/qq_29692489/article/details/80072328https://blog.csdn.net/icangfeng/article/details/81203490

学习总结


贡献者列表


编辑人 编辑时间 编辑内容