1、原始方法template调用
package com.hh; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
package com.hh.controller; import com.hh.pojo.User; import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.discovery.DiscoveryClient; 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; import org.springframework.web.client.RestTemplate; @RestController @RequestMapping("/consumer") @Slf4j @DefaultProperties(defaultFallback = "defaultFallback") public class ConsumerController { @Autowired private RestTemplate restTemplate; @GetMapping("/{id}") public User queryById(@PathVariable Long id){ String url = "http://localhost:9091/user/" + id; return restTemplate.getForObject(url, User.class); } }
注意点:数据类型一定要一致,不然会报错
java.lang.IllegalStateException: PathVariable annotation was empty on param 0.
package com.hh.feign; import com.hh.pojo.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; //声明当前类是一个Feign客户端,指定服务名为user-service @FeignClient(value="user-service") @Resource public interface UserClient { //http://user-service/user/123 @GetMapping("/user/{id}") User queryById(@PathVariable("id") Long id); }