发表于: 2020-08-06 23:28:59

1 2233


今天完成的事情

1. 完成了项目的改写

2. 修复了一些 bug


遇到的问题

1. feign 传递自定义实体类出错,服务端获取到的是空值

原因:

接口的定义中,post 方法的形参要加上注解

/**插入新用户信息*/
@PostMapping(value = "/user", consumes = "application/json")
boolean insertUser(@RequestBody User user);


2. 登录用户名中文乱码

原因:

要对 base64 解密的 byte[] 进行 utf-8 转码转换为字符串

//        String info = new String(Base64.getUrlDecoder().decode(playload));
       byte[] bytes = Base64.getUrlDecoder().decode(playload);
String info = new String(bytes, StandardCharsets.UTF_8);

注释的是原来乱码的写法。

这个问题查了很久,一直以为是没有配置好 spring boot 的过滤器,折腾了很久才定位到 JWT 载荷节码的这个部分。


3. 客户端只调用了一次发送邮件请求,但是服务端偶尔发送两封邮件,时间间隔几毫秒

没有定位到问题,目前怀疑是 Hystrix 配置的影响。


4. feign 接口的注解写到公共包之后客户端启动提示无法注入接口

解决的方法:

客户端 feign 启动注解添加参数指定接口位置

@EnableFeignClients(basePackages = {"cn.mogeek.ptteng.core.service"})


收获

1. feign 的使用

原来我的理解还是有点问题,现在大致的调用方式如下(以 banner 数据的获取为例)

公共组件包(定义接口):

@FeignClient(value = "ptteng-provider", configuration = FeignConfig.class)
public interface BannerService {

/**获取轮播图信息*/
   @GetMapping(value = "/banner/list")
List<Banner> list();
}


服务端实现类:

@CacheConfig(cacheNames = "banner")
@RestController
public class BannerServiceImpl implements BannerService {
private static final Logger LOGGER = LogManager.getLogger(BannerServiceImpl.class);

@Autowired
   private BannerMapper bannerMapper;

@Cacheable(key = "#root.method")
@Override
   public List<Banner> list() {
LOGGER.info("[bannerList] 没有缓存,重读数据库");

List<Banner> banners = bannerMapper.selectByExample(new BannerExample());
return banners;
}
}


客户端调用:

客户端启动类注解(指定接口类的位置)

@EnableFeignClients(basePackages = {"cn.mogeek.ptteng.core.service"})

控制器直接调用,因为 feign 调用注解都在接口写好了

@Autowired

private BannerService bannerService;

@GetMapping("/home")

public ModelAndView home(ModelAndView modelAndView, @RequestParam(required = false) String token) throws IOException {

    ····

    bannerService.list();

    ····

}


这样就非常清晰了,当然这只是最简单的情况,还有文件的传递(我没做)、自定义类的传递、多参数的传递,post 方法这些情况,注意一下接口的注解就好。

feign 这个东西还是很灵活的。


明天的计划

1. 完成深度思考

这几天做这个项目做的有点慢,今天本来预计提交任务九,但是 debug 了一天,到晚上 10点多才搞完。



返回列表 返回列表
评论

    分享到