我已经开始使用spring boot 1.4.1和spring cloud Camden.RELEASE。
我创建了两个简单的REST控制器类及其接口。我已将@HystrixCommand注释放在第一个控制器类的一个API上,并将它们都连接起来。我还在同一个控制器类和接口中添加了fallback方法。代码编译很顺利,服务也很好。但是我看到第一个REST控制器类REST API没有被加载/映射,这意味着调用那些REST API会返回404.我有一个没有任何@HystrixCommand的第二个REST控制器,属于这个类的API加载正常。
如果我只是注释掉'implements<接口名称>'在第一个REST控制器类中,一切都开始工作。
补救措施是什么?
一些虚拟代码片段可帮助您理解问题 -
public interface FirstRESTController {
@RequestMapping(value = "/aa", method = RequestMethod.GET)
ResponseEntity<String> getAA();
@HystrixCommand(fallbackMethod = "reliable")
@RequestMapping(value = "/bb", method = RequestMethod.GET)
ResponseEntity<String> getBB();
public ResponseEntity<String> reliable();
}
@RestController
class FirstRESTControllerImpl implements FirstRESTController {
@RequestMapping(value = "/aa", method = RequestMethod.GET)
ResponseEntity<String> getAA() { ... }
@HystrixCommand(fallbackMethod = "reliable")
@RequestMapping(value = "/bb", method = RequestMethod.GET)
ResponseEntity<String> getBB() { ... }
public ResponseEntity<String> reliable() { ... }
}
---------------------------------------------------------------------
public interface SecondRESTController {
@RequestMapping(value = "/cc", method = RequestMethod.GET)
ResponseEntity<String> getCC();
}
@RestController
class SecondRESTControllerImpl implements SecondRESTController {
@RequestMapping(value = "/cc", method = RequestMethod.GET)
ResponseEntity<String> getCC() { ... }
}
答案 0 :(得分:1)
这是一个已知问题。在具有回退的控制器上使用@HystrixCommand
不起作用。使用hystrix注释将工作移动到另一个bean。