feign与Hmily一起使用时,如果我在service中使用@Autowired注入feign,@Hmily(confirmMethod = "xxxx", cancelMethod = "xxxxx")会失效,如果不使用@Autowired,远程调用会异常

springcloud feign整合Hmily
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
蓝莓小布丁 2023-05-19 10:51关注因为 @Autowired 注解会在 Spring 容器中查找匹配类型的 Bean,并进行注入,而 @Hmily 注解是一个自定义注解,不是 Spring 提供的注解,因此无法通过 @Autowired 进行自动注入。
解决这个问题的一种方式是将 Feign 客户端的实例注入到 @Hmily 注解的方法参数中,而不是通过 @Autowired 注入。
例如,假设你的代码如下:@Service public class MyService { @Autowired private MyFeignClient feignClient; @Hmily(confirmMethod = "confirm", cancelMethod = "cancel") public void doSomething() { // 使用 feignClient 进行远程调用 feignClient.remoteMethod(); } public void confirm() { // 确认方法逻辑 } public void cancel() { // 取消方法逻辑 } }你可以修改代码如下:
@Service public class MyService { private MyFeignClient feignClient; @Autowired public MyService(MyFeignClient feignClient) { this.feignClient = feignClient; } @Hmily(confirmMethod = "confirm", cancelMethod = "cancel") public void doSomething(MyFeignClient feignClient) { // 使用传入的 feignClient 进行远程调用 feignClient.remoteMethod(); } public void confirm() { // 确认方法逻辑 } public void cancel() { // 取消方法逻辑 } }通过构造函数将 Feign 客户端的实例注入到 MyService 类中,并在 doSomething 方法中将它作为参数传递给 @Hmily 注解。这样可以确保 Feign 客户端的实例正确地传递给 @Hmily 注解,使其生效。这是一种通用的解决思路,你可以根据自己的情况进行调整和实施。(参考GPT回答)
解决 无用评论 打赏 举报