SpringCloud - Fingir llamada remota 1

CSDN Topic Challenge Fase 2
Tema de participación: Notas del estudio

Por favor agregue la descripción de la imagen
Tarjeta de visita personal:

bloguero: Alcohólicos ᝰ.
Perfil personal: Disfrute del vino y luche por un futuro con una bebida.
Este artículo es inspirador: Tres personas caminan, ahí debe estar mi maestro.

Por favor agregue la descripción de la imagen
Este proyecto se basa en el programador dark horse de la estación B Java "SpringCloud Microservice Technology Stack", SpringCloud+RabbitMQ+Docker+Redis+search+distributed

[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, sistema detallado curso de pila de tecnología de microservicios springcloud|programador de caballos oscuros Java microservicio] Haga clic para ver

1. Fingir reemplaza RestTemplate

El siguiente es nuestro método de acceso anterior, que requiere ingresar el valor de la dirección URL. Este método no es fácil de usar cuando el valor de la dirección es muy largo, la legibilidad es deficiente y el mantenimiento es difícil.

String url = "http://userservice/user/" + userId;
User user = restTemplate.getForObject(url, User.class);

Dado que el método anterior es difícil de mantener, usamos Fingir en su lugar.
Cómo utilizar:

1. Introducir dependencias

Introducir dependencia fingida en orderservice

<!--feign客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2. Activa Fingir

Agregue la anotación @EnableFeignClients al servicio de pedidos

package cn.itcast.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
@EnableFeignClients
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

3. Escribir fingir cliente

Cree el módulo de clientes en el que se crea la clase UserClient.

package cn.itcast.order.clients;

import cn.itcast.feign.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(value = "userservice")
public interface UserClient {
    
    
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

Análisis: (basado en SpringMVC)

  • Nombre del servicio: servicio de usuario
  • Método de solicitud: OBTENER
  • Ruta de solicitud: /usuario/{id}
  • Parámetro de solicitud: id
  • Tipo de valor de retorno: Usuario

4. Escribir negocio (servicio)

package cn.itcast.order.service;

import cn.itcast.feign.clients.UserClient;
import cn.itcast.feign.pojo.Order;
import cn.itcast.feign.pojo.User;
import cn.itcast.order.mapper.OrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class OrderService {
    
    

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private UserClient userClient;


    public Order queryOrderByUserId(Long orderId) {
    
    
        //1.根据id查询订单
        Order order = orderMapper.findById(orderId);
        //2.查询user
        User user = userClient.findById(order.getUserId());
        //4.封装查询结果
        order.setUser(user);

        return order;
    }
}

5. Consulta (controlador)

package cn.itcast.order.web;

import cn.itcast.feign.pojo.Order;
import cn.itcast.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("order")
public class OrderController {
    
    

   @Autowired
   private OrderService orderService;

    @GetMapping("/{orderId}")
    public Order queryOrderById(@PathVariable("orderId") Long orderId) {
    
    
        // 1.查询订单
        return orderService.queryOrderByUserId(orderId);
    }
}

Supongo que te gusta

Origin blog.csdn.net/m0_65144570/article/details/127138942
Recomendado
Clasificación