SpringCloud异常

发布于:2022-12-06 ⋅ 阅读:(199) ⋅ 点赞:(0)

SpringCloud微服务的调用问题

SpringCloud的大坑记录现场

首先, 我创建了两个微服务模块,一个生成者,一个消费者,当使用消费者去调用生产者使用restTemplate.postForObject方法,报错。


问题描述

异常信息

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: 添加的对象为空,参数异常!] with root cause

从消费者调用生产者时,①传递到生产者的时候参数为null②数据源异常

例如:数据传输过程中数据出现丢失的情况,数据为null

 @RequestMapping("/comsumer/addPayment")
    public R add(Payment payment) {
        System.out.println("消费者访问生产者成功!!---添加中。。。。。。。。");
        System.out.println(payment);
        try {
            return restTemplate.postForObject(PAYMENT_URL + "/addPayment", payment, R.class);
        } catch (Exception e) {
            throw new RuntimeException("微服务调用接口失败!" + e.getMessage());
        }
    }

原因分析:

①消费者是不需要配置数据源的,因为他调用其他微服务提供的接口,不配置数据源就会使用默认数据源,注释掉数据源或者改成德鲁伊数据源
②当消费者微服务调用生产者的微服务时,缺少了一个注解@RequestBody


解决方案:

①注释掉数据源
②在调用生产者的接口参数前加注解@RequestBody

 @PostMapping("/addPayment")
    public R addPayment(@RequestBody Payment payment) {
        log.info("添加的对象:"+payment);
        boolean save = false;
        try {
            save = paymentService.save(payment);
        } catch (Exception e) {
            throw new RuntimeException("添加的对象为空,参数异常!");
        }
        if (save) {
            log.info("添加成功!!");
            return R.ok();
        } else {
            log.info("添加失败!!");
            return R.error();
        }
    }

网站公告

今日签到

点亮在社区的每一天
去签到