OpenFeign 인터페이스 구성 OpenFeign은 인터페이스로 구성되어있으며 실제 동작할 때 구현체를 자동으로 생성해준다. 그런데 응답값을 받아올 때는 어떤 형식으로 받아오지? 라는 생각이 들었다. 풀어서 얘기하면 GetMapping으로 조회하여 데이터를 받아 올 때 응답 형식을 제대로 만들어주지 않는다면 오류가 난다. @FeignClient(name = "instagram", url = "") public interface InstagramFeignClient { @GetMapping("/{user_id}") Map getFaceBookUserPages( @PathVariable("user_id") String userId, @RequestParam("access_token") String acce..
SpringBoot
회사 프로젝트를 진행하면서 알림 기능을 구현하는 과정 안에서 불편함을 느꼈다. 알림 기능은 부가적인 기능이라고 생각한다. 쉽게 생각하면 특정 로직 이후 그것에 대한 이벤트 처리라고 생각한다. ex) 회원 가입 후 → 회원 가입 알림 , 게시글 작성 후 → 게시글 작성 알림 그래서 항상 비즈니스 로직 사이에 껴있어야하고, 알림 객체를 DI 받아야 하기에 객체는 알림 객체에 의존적일 수밖에 없었다. 즉, 강결합 문제가 생겼다. 이 문제를 해결하기 위해 해결방법을 찾아보았고 스프링에서 제공해주는 EventListener를 통해 해결할 수 있었다. 예제 코드 @Service @RequiredArgsConstructor @Slf4j public class EventService { private final App..
SpringBoot + S3 연동하여 이미지 올리기 S3 권한 액세스 부여 또는 S3 버킷 생성은 생략하겠다. (검색해 보면 많은 자료 존재) 물론 순서가 바뀌어도 상관없다. Amazon S3 버킷 생성 및 권한 생성 IAM 역할 지정 액세스 키 및 시크릿 키 발급하여 로컬에 저장 스프링 부트 S3 라이브러리 추가 및 설정 Controller 구현 Service 구현 라이브러리 추가 build.gradle // aws s3 implementation 'com.amazonaws:aws-java-sdk-s3:1.12.364' // 현재는 s3만 사용할 것이므로 s3 의존성만 추가 implementation group: 'org.springframework.cloud', name: 'spring-cloud-s..
스프링 예외 처리 Guide 초기 프로젝트를 설계를 해야하는데 예외처리를 효율적으로 관리할 수 있을까? 라는 생각이 들어 구글링을 뒤적뒤적 해보면서 찾던 중 좋을 글을 찾아 중요한 부분을 요약해보려 한다. 통일된 Error Response 객체 생성하기 통일한 객체를 에러 응답 객체로 사용함으로써 Front 에서 항상 같은 JSON 데이터 구조로 에러를 받을 수 있다. 통일된 객체를 사용함으로써 코드 유지보수성과 데이터가 어떻게 있는지 명확하고 추론하기 쉽다. @ControllerAdvice 로 모든 예외를 핸들링 하여라 모든 예외를 한곳에서 처리하고 관리하기 수월하다. 스프링 자체에서 제공해주는 라이브러리 또는 자체적으로 설치한 라이브러리 등에서 발생하는 예외들을 @ExceptionHandler 을 통..