up:: 利用Hystrix实现断路器


说明:

想把我们从另一个服务所拿到的这个信息进行整合,也就是开发出一个课程列表加价格接口。这个接口呢?是融合双方信息。 工作中经常要这么做。


controller层

@GetMapping("coursesAndPrice")
public List<CourseAndPrice> getCoursesAndPrice() {
    List<CourseAndPrice> coursesAndPrice = coursePriceService.getCoursesAndPrice();
    return coursesAndPrice;
}
 

service层

@Override
public List<CourseAndPrice> getCoursesAndPrice() {
    List<CourseAndPrice> courseAndPriceList = new ArrayList<>();
    List<Course> courses = courseListClient.courseList();
    for (int i = 0; i < courses.size(); i++) {
        Course course = courses.get(i);
        if (course != null) {
            CoursePrice coursePrice = getCoursePrice(course.getCourseId());
            CourseAndPrice courseAndPrice = new CourseAndPrice();
            courseAndPrice.setPrice(coursePrice.getPrice());
            courseAndPrice.setName(course.getCourseName());
            courseAndPrice.setId(course.getId());
            courseAndPrice.setCourseId(course.getCourseId());
            courseAndPriceList.add(courseAndPrice);
        }
    }
    return courseAndPriceList;
}

反向生成接口

List<CourseAndPrice> getCoursesAndPrice();

注入实体对象

@Autowired
CourseListClient courseListClient;

entity实体类

package com.imooc.course.entity;
 
import java.io.Serializable;
 
/**
 * 描述:     课程与价格的融合类
 */
public class CourseAndPrice implements Serializable {
 
    Integer id;
    Integer courseId;
    String name;
    Integer price;
 
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    public Integer getCourseId() {
        return courseId;
    }
 
    public void setCourseId(Integer courseId) {
        this.courseId = courseId;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Integer getPrice() {
        return price;
    }
 
    public void setPrice(Integer price) {
        this.price = price;
    }
}

说明: 没啥好讲的,做过很多遍了。。。

测试