springcloud创建两个子项目order-server和user-server具体数据信息请查看springcloud前三章
order-server向user-server远程调用数据
order-server引入依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
在order-server启动类上加入feign启动注解
@EnableFeignClients //feign启动注解 @SpringBootApplication @EnableDiscoveryClient public class OrderServerApplication {public static void main(String[] args) {SpringApplication.run(OrderServerApplication.class,args);} }
service层编写一个接口:
@FeignClient("userserver") // 是user-server子项目的服务名称 public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id); }
请求方式也要跟user-server子项目一致
controller层:
@RestController @RequestMapping("/order") public class OrderController {@Autowiredprivate OrderService orderService;@Autowiredprivate UserClient userClient;@GetMapping("/id")public Order queryOrderById(Long orderId){Order or = this.orderService.findById(orderId);User user = userClient.findById(or.getUserId());or.setUser(user);return or;} }
访问地址:http://ip地址:端口号/order/id?orderId=值
这种方式不够简便,最好在创建一个子项目存放
创建子项目feign-server:
引入feign 依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
复制实体类:
@Data public class User {private Long id;private String username;private String address; }
复制UserClient:
@FeignClient("userserver") // 是user-server子项目的服务名称 public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id); }
将feign-server引入到order-server项目中
打开feign-server的pox.xml文件
打开order-servere的pox.xml文件引入上面截图标记的
<dependency><artifactId>cloud_pro</artifactId><groupId>com.sc</groupId><version>1.0-SNAPSHOT</version>
</dependency>
将order-server中的User和UserClient删除掉,重新导包
在进行访问:
如果访问报错:
在order-server项目启动类中找到feign启动注解
@EnableFeignClients(clients = {UserClient.class}) // feign启动注解 @SpringBootApplication @EnableDiscoveryClient public class OrderServerApplication {public static void main(String[] args) {SpringApplication.run(OrderServerApplication.class,args);} }
添加这行即可
至此feign远程调用完成