服务之间远程调用

SpringCloud中服务之间RPC调用主要有RestTemplate+Ribbon和Feign客户端调用

RestTemplate+Ribbon所需的依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>   
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

使用RestTemplate调用需在启动类加注解加载

    @LoadBalanced
    @Bean
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

在业务层中调用方式

@Service
public class OrderService {
    @Autowired
    private RestTemplate restTemplate;

    public String call() {
        return this.restTemplate.getForObject("http://service-user/api/user/home", String.class);
    }
}

这里getForObject第一个参数调用服务接口url地址,即 应用服务名 + 接口api相对地址,第二个参数为返回结果类型

使用Feign客户端调用其他服务需引入Feign依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

启动类加 @EnableFeignClients 注解
然后写个对应的接口类

@FeignClient(value="service-user")
public interface UserFeign {

    @RequestMapping(value="/api/user/home")
    String home();
}

@FeignClient的value是在application.yml中定义的其他服务的服务名
Controller接入层中使用Feign调用

    @Autowired
    UserFeign userFeign;

    @RequestMapping(value="/user_home")
    @ResponseBody
    public String userHome() {
        return userFeign.home();
    }

猜你喜欢

转载自blog.csdn.net/u011731233/article/details/81238786
今日推荐