반응형
spring boot 에서 open feign 을 사용하기 위햐서는 spring cloud 라이브러리를 사용해야 한다.
앞서 이야기 했듯 open feign은 인터페이스 구현 만으로 빠르고 쉽게 api 를 호출 할 수 있다.
gradle.build
plugins {
id 'org.springframework.boot' version '2.6.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2021.0.0")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
test {
useJUnitPlatform()
}
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
을 추가한다.
ClientApplication.java
@SpringBootApplication
@EnableFeignClients
public class ClientApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(ClientApplication.class, args);
}
}
@EnableFeignClients
를 선언하여 feign 을 활성화 시켜 준다.
FallbackController.java
@Slf4j
@Controller
@AllArgsConstructor
public class FallbackController {
private final FallbackClient fallbackClient;
@RequestMapping(method = RequestMethod.GET, value = "/client/feign/fallback/timeout")
public @ResponseBody
String fallbackClient_timeout() {
String responseStr = fallbackClient.timeout();
log.debug("responseStr = {}", responseStr);
return responseStr;
}
@RequestMapping(method = RequestMethod.GET, value = "/client/feign/fallback/exception")
public @ResponseBody String fallbackClient_exception() {
try {
String responseStr = fallbackClient.exception();
log.debug("responseStr = {}", responseStr);
return responseStr;
}catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
FallbackClient.java
feign client 에대한 설정 http://localhost:8083 default url에 각 메소드 별로 path를 지정하여 호출 할 수있다.
@FeignClient(
name="FallbackClient"
,url = "http://localhost:8083"
)
public interface FallbackClient {
@RequestMapping("/product/timeout")
String timeout();
@RequestMapping("/product/exception")
String exception();
}
- name
- bean name 이 아니며, feign client 의 이름이다. eureka 를 이용하여 discovery pattern 을 사용하면, 해당 discovery 된 application-name 을 적어 주면 된다.
- url
- 디폴트 url 정보를 입력한다.
반응형
'Spring > Spring Cloud' 카테고리의 다른 글
spring open feign retry (circuit breaker) (0) | 2022.01.14 |
---|---|
open feign error decoder custom (0) | 2022.01.14 |
open feign log 설정 (0) | 2022.01.14 |
Spring Open Feign (0) | 2022.01.14 |
circuit breaker (hystrix and the resilience4j) (0) | 2021.07.21 |