Compréhension de base de Feindre

C'est quoi Feindre

  • Feign est un client de service Web déclaratif, qui facilite les appels entre les microservices, de la même manière qu'un contrôleur appelle un service.

  • Spring Cloud intègre Ribbon et Eureka pour fournir un client http à charge équilibrée lors de l'utilisation de Feign.

  • Feign est un client de service HTTP RESTful léger dans le composant Spring Cloud Netflix Il implémente un framework open source pour l'équilibrage de charge et les appels est, encapsule Ribbon et RestTemplate, implémente la programmation orientée interface WebService et réduit encore le couplage de projets.

  • Feign a un ruban intégré, qui est utilisé pour équilibrer la charge côté client et appeler le centre d'enregistrement du service.

  • Feign lui-même ne prend pas en charge les annotations Spring MVC. Il possède son propre ensemble d'annotations. Pour une utilisation plus facile, Spring Cloud a hachuré OpenFeign.

  • Feign est un client HTTP déclaratif basé sur un modèle (consommateur uniquement).

  • La façon d'utiliser Feign est la suivante : utilisez les annotations Feign pour définir une interface et appelez cette interface pour appeler le service du registre de services.

Quel problème résout Feign

  Feign vise à faciliter l'écriture de clients HTTP JAVA. Feign simplifie le code RestTemplate et implémente

L'équilibrage de charge du ruban rend le code plus concis et réduit le code appelé par le client. L'utilisation de Feign pour réaliser l'équilibrage de charge est le premier choix.

option. Il vous suffit de créer une interface et d'y ajouter des annotations.

  Feign est un composant d'appel de service déclaratif, son cœur est : appeler des méthodes distantes comme appeler des méthodes locales, sans se sentir

Connaissant la requête HTTP distante, cela résout l'expérience que le développeur appelle l'interface distante tout comme appeler la méthode locale, et le développeur ne la perçoit pas du tout.

Sachant qu'il s'agit d'une méthode distante, il ignore encore plus qu'il s'agit d'une requête HTTP. Pas besoin de prêter attention aux détails de l'interaction avec la télécommande, sans parler de l'environnement distribué

développement environnemental. C'est comme Dubbo, le Consumer appelle directement la méthode d'interface Provider sans passer par le classique HtpClient

Construisez la requête, puis analysez les données renvoyées

La différence entre Feign et OpenFeign

OpenFeign est une annotation indiquant que Spring Cloud prend en charge Spring MVC sur la base de Feign, comme @RequesMapping, @Pathvariable, etc.

@Feignclent d'OpenFelgn peut analyser l'interface sous l'annotation @RequestMapping de SpringMVC, et générer une classe d'implémentation via un proxy dynamique, et implémenter l'équilibrage de charge et les services d'appel dans la classe d'implémentation.

Feindre les étapes d'utilisation

  1. Ajouter des dépendances Feign au projet
			<dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
                <version>3.1.3</version>
            </dependency>
  1. Ajoutez l'annotation @FeignClient à l'interface Feign déclarée
//在@FeignClient注解声明要调用的微服务名称
@FeignClient("userservice") 
public interface FeignService {
    
    
// 配置需要调用的服务地址及参数
    @GetMapping("/user/{id}")
    public User queryById(@PathVariable("id") Long id);

}

  1. Déclarez le nom du microservice à appeler dans l'annotation @FeignClient

  2. Configurez l'adresse de service et les paramètres qui doivent être appelés

  3. Ajouter @EnableFeignClients à la classe de démarrage
    通过basePackageClasses = ***.class属性,给注解 设置需要扫描的class
    通过basePackages="com.example.*"给注解 设置需要扫描的路径

@SpringBootApplication
@EnableFeignClients(basePackageClasses = FeignService.class)
public class OrderApplication {
    
    

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

}
  1. Injectez le service Feign dans le service qui doit être appelé à distance via l'annotation @Autowired et appelez la méthode correspondante
  	 @Autowired
    private FeignService feignService;
    User user = feignService.queryById(order1.getNum());

Je suppose que tu aimes

Origine blog.csdn.net/weixin_58286934/article/details/128644778
conseillé
Classement