전체 글

안녕하세요;
· SpringBoot
회사 프로젝트를 진행하면서 알림 기능을 구현하는 과정 안에서 불편함을 느꼈다. 알림 기능은 부가적인 기능이라고 생각한다. 쉽게 생각하면 특정 로직 이후 그것에 대한 이벤트 처리라고 생각한다. ex) 회원 가입 후 → 회원 가입 알림 , 게시글 작성 후 → 게시글 작성 알림 그래서 항상 비즈니스 로직 사이에 껴있어야하고, 알림 객체를 DI 받아야 하기에 객체는 알림 객체에 의존적일 수밖에 없었다. 즉, 강결합 문제가 생겼다. 이 문제를 해결하기 위해 해결방법을 찾아보았고 스프링에서 제공해주는 EventListener를 통해 해결할 수 있었다. 예제 코드 @Service @RequiredArgsConstructor @Slf4j public class EventService { private final App..
· SpringBoot
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..
· SpringBoot
스프링 예외 처리 Guide 초기 프로젝트를 설계를 해야하는데 예외처리를 효율적으로 관리할 수 있을까? 라는 생각이 들어 구글링을 뒤적뒤적 해보면서 찾던 중 좋을 글을 찾아 중요한 부분을 요약해보려 한다. 통일된 Error Response 객체 생성하기 통일한 객체를 에러 응답 객체로 사용함으로써 Front 에서 항상 같은 JSON 데이터 구조로 에러를 받을 수 있다. 통일된 객체를 사용함으로써 코드 유지보수성과 데이터가 어떻게 있는지 명확하고 추론하기 쉽다. @ControllerAdvice 로 모든 예외를 핸들링 하여라 모든 예외를 한곳에서 처리하고 관리하기 수월하다. 스프링 자체에서 제공해주는 라이브러리 또는 자체적으로 설치한 라이브러리 등에서 발생하는 예외들을 @ExceptionHandler 을 통..
· SpringBoot
문제점 식별 웹소켓 STOMP을 통해 pub/sub 방식으로 메시지를 발행하고 JPA을 접목하여 메시지를 저장할 수 있었지만 큰 문제점이 있었다. 채팅방을 만들고 채팅을 보낼 때 유저가 현재 웹사이트에 들어오지 않았다면 유저에게 메세지를 읽지 않았다는 알림을 보내고 싶었다. 처음 생각은 이러했다. 세션에다가 정보를 담으면 되지 않을까? → 진행하는 프로젝트에서는 세션을 사용하지 않고 jwt을 통해 인증을 한다 또한 STOMP 방식은 기존 웹소켓 방식은 단순하고 편리하게 사용하는 게 목적이기에 세션을 사용하는 건 좋은 방법이 아니라고 생각했다. 유저가 웹소켓이 끊겼다는 정보와 유저가 무슨 채팅방들을 가지고 있는지 DB에 저장하는 방식은? → 가능은 하겠지만 너무 많은 리소스를 차지한다 좋지 않은 방법이라고..
Dmin3
스터디 일지 By Dmin3