[스프링부트] OpenFeign (오픈페인) 개발 예제 코드 템플릿
OpenFeign은 MS내에서 타MS의 API를 쉽게 호출할 수 있도록 도와주는 오픈소스이다.
API를 호출하는 OpenFeign Client 인터페이스와 호출한 api가 오류가 발생할때 동작하는 FallFactory 클래스 2개의 java파일로 구성된다.
OpenFeign Client에는 @FeignClient 어노테이션을 정의하고 name, url, fallbackFactory를 선언한다.
예제 템플릿은 다음과 같다.
OpenFeign Client 인터페이스 생성
@FeignClient(name=”test”, url=”${api.test.url}”, fallbackFactory=”TestFallbackFactory.class”)
public interface TestClient {
@PostMapping(“/test/selectUserInfo”)
UserOutVo testUsrInfo(@RequestHeader(“test_header”) String feignHeder, @RequestBody UserInVo);
}
참고로 @RequestHeader는 생략가능하다.
FallbackFactory 클래스 생성
@Component
public class TestFallbackFactory implements FallbackFactory<TestClient> {
@Override
public TestClient create(Throwable cause) {
return new TestClient() {
@Override
public UserOutVo openFeginSend((@RequestHeader(“test_header”) String feignHeder, @RequestBody UserInVo) {
return UserOutVo.builder().msg(“오류발생”).build();
}
}
}
}
OpenFeign Client 호출
@Component
@RequiredArgConstructor
public class TestContorller {
private final TestClient testClnt;
public void saveTest() throws Exception {
UserInVo uvo = new UserInVo();
uvo.setUserId(“test”);
UserOutVo = testClnt.openfeignSend(“header”, uvo);
}
}
오픈페인 클라이언트로 API호출 후 오류발생시 프레임워크에서 FallbackFactory를 호출한다.
마지막으로 @EnableFeignClients 어노테이션 정의가 필요하다.
@EnableFeignClients 어노테이션 선언
스프링부트 Application 클래스를 열고 @EnableFeignClients 어노테이션을 추가해준다.
@SpringBootApplication
@ComponentScan(“com.test”)
@EnableFeignClients
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}