자바.java.java잘못된 상태 예외:로드 밸런싱에 대한 페이그니 클라이언트가 정의되지 않았습니다.봄-구름-스타터-넷플릭스-리본을 포함하는 것을 잊으셨습니까?
예외가 발생했습니다.
FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netflix-ribbon?
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:178)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1654)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1174)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:257)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:224)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1012)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:338)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:333)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105)
at com.hsbc.gbgcf.spartan.referencedatabase.UserRegistrationApplication.main(UserRegistrationApplication.java:57)
내 프로젝트를 실행할 때.내 pom.xml은 다음을 포함합니다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
저는 리본의 추가적인 종속성 없이 제 다른 프로젝트에서도 가짜 클라이언트를 사용하고 있으며 이들은 동일한 봄부트 버전 2.0.8로 작동하고 있습니다.
저는 같은 문제로 다른 스택 오버플로 링크를 참조했고 그들은 리본의 추가 의존성을 추가해달라고 요청했습니다.나는 내 pom.xml에 같은 것을 추가하려고 했지만 도움이 되지 않았습니다.
FeignClient 인터페이스는,
@FeignClient(value = "user-service", decode404 = true)
public interface UserFeignClient {
@PostMapping("/do-something")
void doSomething();
}
주 클래스 코드:
@Configuration
@EnableAspectJAutoProxy
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication(scanBasePackages = {"test.user"})
public class UserRegistrationApplication{
public static void main(String[] args) {
UserFeignClient userFeignClient = applicationContext.getBean(UserFeignClient.class);
userFeignClient.doSomething();
System.exit(SpringApplication.exit(applicationContext));
}
}
저는 Sprint Boot 버전 2.0.8을 사용하고 있습니다.
나에게, 그 문제는 포함되지 않았습니다.url
의 매개 변수.@FeignClient
주석:
@FeignClient(name = "microservice-common", url = "${microservice-common.url}")
(1)Spring Cloud Loadbalancer 또는 (2)Ribbon 중 어떤 클라이언트 로드 밸런서를 사용할지 결정해야 합니다.
Spring Cloud Loadbalancer는 넷플릭스의 리본 프로젝트에서 우리가 하던 일을 할 수 있는 일반적인 추상화입니다.Spring Cloud는 여전히 Netflix Ribbon을 지원하지만, Netflix Ribbon의 다른 많은 서비스 스택과 마찬가지로 날짜가 얼마 남지 않았습니다. 따라서 대안을 지원하기 위해 추상화를 제공했습니다.
여기를 확인하십시오. https://spring.io/blog/2020/03/25/spring-tips-spring-cloud-loadbalancer
스프링 클라우드 로드 밸런서:
spring:
cloud:
loadbalancer:
ribbon:
enable: false
# And... inform the "url" attribute at FeignClient
@FeignClient(name = "student", url = "student")
리본:종속성 추가:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
# And (optionally)... @application.yaml
spring:
cloud:
loadbalancer:
ribbon:
enable: true
리본
Spring Boot Version > = 2.0.0.REASE 및 < 2.4.0-M1이 필요합니다.
사용하다spring-cloud-starter-loadbalancer
대신 종속성spring-cloud-starter-netflix-ribbon
.
feignClient 인터페이스에서 URL과 함께 ServiceName(즉, eignName)을 추가합니다.
@FeignClient(name = "user-service", url = "feignUrl", decode404 = true)
public interface UserFeignClient {
@PostMapping("/do-something")
void doSomething();
}
Feign Client는 다른 서비스의 Rest-Api에 더 쉽게 호출할 수 있는 도구인 반면 Ribbon은 주로 로드 밸런싱에 사용됩니다.
리본을 사용하려는 경우
- 이 종속성을 pom.xml에 추가합니다.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
FeignClient 인터페이스
@FeignClient(name="ServiceName") @RibbonClient(name="ServiceName")
아래와 같이 application.properties를 구성합니다.
ServiceName.ribbon.listOfServers=hostname://localhost:8000, http://localhost:8001
언급URL : https://stackoverflow.com/questions/63702885/java-lang-illegalstateexception-no-feign-client-for-loadbalancing-defined-did
'bestsource' 카테고리의 다른 글
oracle.jdbc에 연결을 캐스트할 수 없습니다.오라클 연결 (0) | 2023.07.08 |
---|---|
계산된 속성이 서로 다른 탭에서 UI를 업데이트하지 않음 (0) | 2023.07.08 |
대규모 분산 시스템에서 ObjectId와 UUID의 충돌 확률 (0) | 2023.07.08 |
Woocommerce 주문 검토를 체크아웃의 맨 위로 이동 (0) | 2023.07.08 |
SQL 스키마만 백업하시겠습니까? (0) | 2023.07.08 |