feign与Hmily一起使用时,如果我在service中使用@Autowired注入feign,@Hmily(confirmMethod = "xxxx", cancelMethod = "xxxxx")会失效,如果不使用@Autowired,远程调用会异常
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回答)
解决 无用评论 打赏 举报
悬赏问题
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度