gpt4 book ai didi

java - 如果 REST Controller 类和接口(interface)具有使用 @HystrixCommand 注释的 API,则不会加载所有 REST API

转载 作者:行者123 更新时间:2023-12-01 09:26:41 25 4
gpt4 key购买 nike

我已经开始使用 spring boot 1.4.1 和 spring cloud Camden.RELEASE。

我创建了两个简单的 REST Controller 类及其接口(interface)。我已将 @HystrixCommand 注释放在第一个 Controller 类和接口(interface)的一个 API 上。我还在同一 Controller 类和接口(interface)中添加了后备方法。代码编译顺利,服务加载也顺利。但我看到第一个 REST Controller 类 REST API 未加载/映射,这意味着调用这些 REST API 返回 404。我有一个没有任何 @HystrixCommand 的第二个 REST Controller ,并且属于此类的 API 加载正常。

如果我只是在第一个 REST Controller 类中注释掉“implements ”,一切就会开始工作。

有什么补救措施吗?

一些虚拟代码片段可帮助理解问题 -

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() { ... }
}

最佳答案

这是一个已知问题。在具有后备功能的 Controller 上使用 @HystrixCommand 不起作用。使用 hystrix 注释将工作转移到另一个 bean。

关于java - 如果 REST Controller 类和接口(interface)具有使用 @HystrixCommand 注释的 API,则不会加载所有 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com