저는 Feign을 사용하여 Eureka를 통해 외부 웹 서비스를 호출하는 Spring 부트 응용 프로그램을 보유하고 있습니다. 필자는 Feign 인터페이스의 조롱 된 구현을 사용하여 애플리케이션을 실행할 수 있기를 원하므로 Eureka 또는 외부 웹 서비스를 실행하지 않아도 애플리케이션을 로컬에서 실행할 수 있습니다. 나는 이것을 할 수있게 해주는 실행 구성을 정의하는 것을 상상했지만, 이것이 작동하도록 고심하고있다. 문제는 Spring의 "마법"이 내가 시도한 것에 상관없이 Feign 인터페이스를위한 bean을 정의한다는 것이다.환경에 따라 다른 Feign 클라이언트 구현을 정의하십시오.
척하기 인터페이스
@FeignClient(name = "http://foo-service")
public interface FooResource {
@RequestMapping(value = "/doSomething", method = GET)
String getResponse();
}
서비스
public class MyService {
private FooResource fooResource;
...
public void getFoo() {
String response = this.fooResource.getResponse();
...
}
}
나는 봄 프로파일이 "로컬"인 경우 조건부 빈을 등록 구성 클래스를 추가하는 시도,하지만 그 호출되지 않았다 그 스프링 프로파일로 어플리케이션을 실행했을 때 :
내 서비스가 실행되는 시점에서는 MyService
에서 FooResource
멤버 변수는
이 인 IntelliJ에 따라 타입이다. 이것은 Spring Cloud Netflix 프레임 워크에 의해 자동으로 생성되는 유형이므로 실제로 원격 서비스와 통신하려고 시도합니다.HardCodedTarget (유형 = FoorResource, URL = http://foo-service)
구성 설정에 따라 Feign 인터페이스의 구현을 조건부로 무시할 수있는 방법이 있습니까?