Sujet de participation à la phase 2 du Défi thématique du RPSC
: Notes d'étude
Carte de visite personnelle :
blogueur: Alcooliques ᝰ.
Profil personnel: Offrez-vous du vin et aspirez à un avenir avec un verre.
Cet article est inspirant: Trois personnes marchent, il doit y avoir mon professeur.
Ce projet est basé sur le programmeur dark horse de la station B Java "SpringCloud Microservice Technology Stack", SpringCloud+RabbitMQ+Docker+Redis+search+distributed
[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, cours détaillé sur la pile de la technologie de microservices springcloud | microservice Java programmeur dark horse] Cliquez pour regarder
Table des matières
1. Feign remplace RestTemplate
Ce qui suit est notre méthode d'accès précédente, qui nécessite de saisir la valeur de l'adresse URL. Cette méthode n'est pas facile à utiliser lorsque la valeur de l'adresse est très longue plus tard, la lisibilité est mauvaise et la maintenance est difficile.
String url = "http://userservice/user/" + userId;
User user = restTemplate.getForObject(url, User.class);
Comme la méthode précédente est difficile à maintenir, nous utilisons Feign à la place.
Comment utiliser:
1. Introduire des dépendances
Introduire une dépendance factice dans orderservice
<!--feign客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. Activez Feindre
Ajouter l'annotation @EnableFeignClients au service de commande
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. Écrire un client factice
Créez le module clients dans lequel la classe UserClient est créée.
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);
}
Analyse : (basée sur SpringMVC)
- Nom du service : userservice
- Méthode de requête : GET
- Chemin de requête : /user/{id}
- Paramètre de requête : id
- Type de valeur de retour : Utilisateur
4. Écrire des affaires (service)
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. Requête (contrôleur)
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);
}
}