FeignClient 支队服务消费方进行修改,服务提供方不需要修改
还是对 User 进行修改 UserApplication 中添加
@EnableFeignClients
UserApplication 代码如下:
package com.study.user; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; @EnableEurekaClient @SpringBootApplication @EnableFeignClients public class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); } }
UserController 代码如下:
package com.study.user.controller; import com.study.user.service.UserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; @RestController @RequestMapping("user") public class UserController { private final static Logger logger = LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; /** * 更新用户信息 * <p> * loadBalancerClient 以及 RestTemplate 远程调用 远程服务 * * @return */ @GetMapping("/getMenu") public List<Map<String, Object>> justTest() { return userService.getMenu(); } }
UserService 代码如下:
package com.study.user.service; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import java.util.List; import java.util.Map; @FeignClient(value = "menu") // 指定调用的 那个微服务的名称,这里调用的还是menu的 getMenu 方法 public interface UserService { @RequestMapping(value="/menu/getMenu") // 调用 menu 中 getMenu 方法 List<Map<String, Object>> getMenu(); }
pom.xml 中添加
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>
访问依然 ok