SPRING

[Feign Client] 정리 및 사용법

개발하는고양이 2024. 1. 25. 10:07
반응형

Feign Client

메일 발송 서비스인 mailgun를 스프링환경에서 간편하게 호출하기 위해서는 feign client라는 라이브러리가 필요하다.

spring-cloud-starter-openfeign 으로 라이브러리를 추가해주면 된다.

JPA처럼 인터페이스만 만들어주면 스프링이 자동으로 구현체를 만들어준다.

mailgun 사용법은 여기를 보면된다.

https://documentation.mailgun.com/en/latest/quickstart-sending.html

 

How to start sending email — Mailgun API documentation

Add a domain you own and verify it by setting up the DNS records we provide (known as SPF and DKIM) at your DNS provider. How to verify your domain Add your domain or subdomain. Open your DNS provider and add the two TXT DNS records provided. If you want M

documentation.mailgun.com

의존성

ext {
	set('springCloudVersion', "2021.0.3")
}

dependencies {
	...
	implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
    	...
}


dependencyManagement {
	imports {
		mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
	}
}

 

사용하기

@SpringBootApplication
@EnableFeignClients
public class PuzzleApplication {
	public static void main(String[] args) {

		SpringApplication.run(PuzzleApplication.class, args);
	}

}
@FeignClient(name = "mailgun", url="https://api.mailgun.net/v3/")
@Qualifier("mailgun")
public interface MailgunClient {
    @PostMapping("domain/messages")
    Response sendEmail(@SpringQueryMap SendMailForm form);
}

@EnableFeignClients 를 root package 위치의 클래스에 붙여주어야한다.

@EnableFeignClients는 지정된 package를 돌아다니면서 @FeignClient를 찾아 구현체를 생성한다.

 

Bean

feign에는 기본으로 설정되는 bean들이 있다.

그중에서 BasicAuthenticationInterceptor 를 mailgun에 접근할 수 있도록 설정해주었다.

@Configuration
public class FeignConfig {
    @Value("${mailgun.key}")
    String API_KEY;
    @Qualifier(value = "mailgun")
    @Bean
    public BasicAuthenticationInterceptor basicAuthenticationInterceptor(){

        return new BasicAuthenticationInterceptor("api",API_KEY);
    }

}

 

시나리오

 

반응형