zr-consumer
client
UserClient.java
@FeignClient(value = "zr-provider",fallback = UserClientFallback.class)
public interface UserClient {
@RequestMapping("user/{id}")
User queryById(@PathVariable("id")Long id);
}
UserClientFallback.java
@Component
public class UserClientFallback implements UserClient{
@Override
public User queryById(Long id) {
User user=new User();
user.setUsername("失败啦。。。。");
return user;
}
}
controller
UserController.java
@Controller
@RequestMapping("consumer/user")
@DefaultProperties(defaultFallback = "fallBackMethod")
public class UserController {
/*@Autowired
public RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;*/
@Autowired
private UserClient userClient;
@RequestMapping("{id}")
@ResponseBody
// @HystrixCommand
public String queryById(@PathVariable Long id){
/* User user=restTemplate.getForObject("http://localhost:8081/user/"+id,User.class);*/
/*List<ServiceInstance> instances = discoveryClient.getInstances("zr-provider");
ServiceInstance instance = instances.get(1);
User user=restTemplate.getForObject("http://localhost:"+instance.getPort()+"/user/"+id,User.class);
return user.toString();*/
User user = userClient.queryById(id);
return user.toString();
}
/* public String fallBackMethod(){
return "请求反面,请以后再尝试!!";
}*/
}
pojo
User.java
public class User {
private Long id;
private String username;
private String password;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
ConsumerApplication.java
/*@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker*/
@SpringCloudApplication
@EnableFeignClients
public class ConsumerApplication {
/*@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}*/
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
zr-eureka
EurekaApplication.java
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
zr-provoder
controller
UserController.java
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("{id}")
public User queryById(@PathVariable("id")Long id){
return userService.queryById(id);
}
}
Service
UserService.java
@Service
public class UserService {
@Autowired
private UserDao userDao;
public User queryById(Long id){
return userDao.selectByPrimaryKey(id);
}
}
ProvoderApplication.java
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
zuul
ZuulApplication.java
@SpringBootApplication
@EnableZuulProxy
@EnableDiscoveryClient
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class,args);
}
}