我有一个错误,当我注入feignClient接口在我的服务。这是我使用的Spring引导和Spring云版本:
组织。springframework。启动:spring启动程序父级:2.0.6。发布spring云版本:Finchley。SR2
但是当我在我的类服务中创建一个虚假客户端bean时,它就工作了。
创建客户外部客户端:
@Component("DepartmentClient")
@FeignClient(name = "DEPARTMENT-SERVICE", url = "http://test")
public interface DepartmentClient {
@RequestMapping(value = "/department/{departmentId}", method = RequestMethod.GET)
void findDepartmetById(@PathVariable("departmentId") int departmentId);
}
我把这个假冒的客户注入军队
@Service
public class AgentService {
Logger logger = LoggerFactory.getLogger(AgentService.class);
@Autowired
private AgentRepository agentRepository;
@Autowired
private DepartmentClient departmentClient;
....
}
输出
Field departmentClient in ...AgentService required a bean of type '...DepartmentClient' that could not be found.
The injection point has the following annotations:
org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type .... DepartmentClient' in your configuration.
在上面的答案中添加更多细节:
在@FeignClient注释中,字符串值(“上面的department”)是一个任意的客户端名称,用于创建功能区负载平衡器。还可以使用URL属性(绝对值或仅主机名)指定URL。应用程序上下文中bean的名称是接口的完全限定名。要指定自己的别名值,可以使用@FeignClient注释的限定符值。
要使外部客户正常工作,我们需要执行以下步骤:
1.外部客户端的更改:它应该是一个带有外部客户端注释的接口
@FeignClient(
name = "DEPARTMENT-SERVICE",
configuration = {DepartmentConfiguration.class},
fallback = DepartmentFallback.class
)
@RequestMapping(
value = {"${service.apipath.department}"},
consumes = {"application/json"},
produces = {"application/json"}
)
public interface DepartmentClient {
@RequestMapping(value = "/department/{departmentId}", method =
RequestMethod.GET)
void findDepartmetById(@PathVariable("departmentId") int departmentId);
}
2.主要类别的变化:
@EnableFeignClients
@SpringBootApplication
public class DepartmentApplication {
public static void main(String[] args) {
SpringApplication.run(DepartmentApplication.class, args);
}
}
您是否尝试删除模拟界面的@Component?
否则看看您的spring应用程序组件扫描,如果您的接口不是扫描,那么bean将不会被创建
要让FaignClient工作,您必须将@EnableFaignClients添加到配置类或@SpringBootApplication类
@SpringBootApplication
@EnableFeignClients
public class FooMain { // Your Main class
public static void main(String[] args) {
SpringApplication.run(FooMain.class, args);
}
}
我有我的Jhipster配置/应用程序属性。java类设置和工作,但不清楚如何将属性值注入url的假客户端注释: 使用@Value在下面不起作用: 有什么想法吗?
我对假装很陌生。今天就发现吧……当我读到Spring Cloud Feign时,我的第一个问题是:“您如何包装您的Fiign客户机?” 我举个例子。假设我们有2个微服务M1和M2。M2使用来自M1的endpoint。 null 也许我完全错了,请指正。 多谢!拜拜
使用Spring云合同验证生产者和消费者之间的合同。在我的消费者控制器中,我正在使用Feign client调用另一个微服务方法来获取一些数据。但是现在在SpringCloud contract中,为这个微服务进行存根调用是不可能的。 使用Spring Cloud与Netflix OSS。
这是原样代码。 我用假客户机修改了代码。像这样。 从功能上来说,没有问题。 有人帮忙吗,拜托。谢谢!
我肯定在这里缺少某种序列化程序 任何建议都将不胜感激! 谢谢
我正在使用spring Cloud的eureka和feign在一些服务之间进行通信(比如A和B)。现在我想统一测试一个服务(a)的服务层。问题是,这个服务(A)正在使用一个假客户机来请求其他服务(B)的一些信息。 编辑:我最终为虚假客户机创建了一个存根。存根被标记为主要组件,以强制spring在我的测试中实例化存根。 这是我提出的解决方案。