La position actuelle:Accueil du site>Feignclient utilise un tutoriel détaillé (illustration)

Feignclient utilise un tutoriel détaillé (illustration)

2022-07-23 14:51:57Gérard pick - Shea

Action

@FeignClientUtilisé pour créer une déclaration estAPIInterface,L'interface estRESTfulStyle.FeignConçu pour être branché,Peut être injecté dans d'autres composants etFeignÀ utiliser ensemble.Le plus typique est siRibbonDisponible,FeignEtRibbonCombinaison de l'équilibrage de la charge.

@FeignClientPropriétés communes des étiquettes

  • Capture d'écran du code source
    Insérer la description de l'image ici
  • name(EtvalueMême chose.):DésignationFeignClientNom de,Si le projet utiliseRibbon,nameLa propriété sera utilisée comme microservice(Le nom d'un centre)Nom de,Pour la découverte de services(L'illustration est la suivante:)
  • url: urlGénéralement utilisé pour la mise en service,Peut être spécifié [email protected]'adresse de l'appel(L'illustration est la suivante:)
  • decode404()C'est - à - dire:404C'est décodé,Ou lancer une exception.
  • configuration()PréciserFeignClientClasse de configuration pour,La classe de configuration par défaut estFeignClientsConfigurationCatégorie,Par défaut,Cette classe injecte par défautDecoder、EncoderEtConstantAttendez la configurationbean.
  • fallback()Classe de traitement pour la configuration des fusibles.
    Insérer la description de l'image ici
    Insérer la description de l'image ici
  • FeignClientClasse de configuration pour(configuration())
public class FeignUserSupportConfig
{
    
    @Bean
    @Primary
    @Scope("prototype")
    public Encoder multipartFormEncoder() {
    
        return new SpringFormEncoder(new SpringEncoder(new ObjectFactory<HttpMessageConverters>() {
    
            @Override
            public HttpMessageConverters getObject() throws BeansException
            {
    
                return new HttpMessageConverters(new RestTemplate().getMessageConverters());
            }
        }));
    }

    @Bean
    public feign.Logger.Level multipartLoggerLevel() {
    
        return feign.Logger.Level.FULL;
    }
}

Utiliser le processus

  • 1. Augmentation de la classe de démarrage @EnableFeignClients
    Insérer la description de l'image ici
  • 2.Définir l'interface
package com.xxx.xxx.client;


import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

@Component
/** * value = "user" Moyenne user Pour Appelez user ServicesId * spring.application.name=user */
@FeignClient(value = "user", configuration = UserSupportConfig.class)
public interface TestClientService {
    
    /** * @param id * @return /user/selectById Pour userController Dans /user/selectById Adresse de la méthode */
    @RequestMapping(value = "/user/selectById", method = RequestMethod.GET, produces = {
    MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    /** * userId Pour les paramètres Il faut é[email protected] Sinon, une erreur est signalée. */
    Map upload(@RequestParam("userId") Integer id);
}

  • 3. Définir la classe de fusible ,Rappel en cas d'erreur:
import java.util.List;
import org.springframework.stereotype.Component;
@Component
public class Hysitx implements TestClientService {
    
	@Override
	public List<String> test(String[] names) {
    
		System.out.println("L'appel d'interface a échoué");
		return null;
	}
}
  • 4.Appelez
    Et de baseserviceAppel cohérent
    1.Introduction en premier @Autowired
    2. Appelé directement dans la méthode

L'explication populaire peut le considérer comme unspring Bean Peut être considéré comme unService

Voilà[email protected] AjouterHeaderInformation

[email protected]

@FeignClient(name="custorm",fallback=Hysitx.class)
public interface IRemoteCallService {
    
	@RequestMapping(value="/user/selectById",method = RequestMethod.POST,
		headers = {
    "Content-Type=application/json;charset=UTF-8"})
    Map test(@RequestParam("userId") int id);
}

2. Ajouter avant les paramètres de la méthode @RequestHeaderNotes:

@FeignClient(name="custorm",fallback=Hysitx.class)
public interface IRemoteCallService {
    
	@RequestMapping(value="/user/selectById",method = RequestMethod.POST,
		headers = {
    "Content-Type=application/json;charset=UTF-8"})
    List<String> test(@RequestParam("userId")@RequestHeader("Authorization") int id);
}

[email protected]

@FeignClient(name="custorm",fallback=Hysitx.class)
public interface IRemoteCallService {
    
	@RequestMapping(value="/user/selectById",method = RequestMethod.POST)
	@Headers({
    "Content-Type: application/json;charset=UTF-8"})
    List<String> test(@RequestParam("userId") int id);
}

Mentions de copyright
Auteur de cet article [Gérard pick - Shea],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207230928588926.html

Recommandé au hasard