프로젝트 12

로깅, 푸시 알림 요청 비동기로 처리하기

요구사항비즈니스 로직payload 로 넘어온 채팅방 PK가 정말 있는 채팅방인지와 사용자가 채팅방에 들어가있는지 확인해당 채팅방에 채팅 레코드 추가해당 채팅방에 있는 사용자 모두 조회조회된 사용자들의 device 에 모두 push 요청push 요청 보내기 시작하면서부터 모든 사용자의 device 에게 요청 다 보낼 때까지의 시간 측정로깅들어오는 모든 요청에 대해 로그를 남겨야 함response 없이 request 요청에 대한 로그만 남기도록request header 의 Authorization 헤더 제외http method, uri, 요청 온 시간, 요청 ip, request body 로깅 필요 (GET 요청 무시)DB 에다가도 로그 남겨야 하고 파일에다가도 로그 남아야 함DB 그리고 파일로의 로그 저장..

개발자 겸 디자이너 겸 PM 도전기

피그마 도전기현재 PM겸, 디자이너 겸 백엔드 개발자로 쿠룸팀에 참여중이다.공지사항, 마이페이지 플로우에서 기능 및 디자인을 구성해보았다. 친구 현재 위치 공유 친구의 위치를 실시간을 확인하고 공유하는 기능을 추가하였다. 친구 현재 위치 공유 일주일 간 내 장소 통계 기능을 넣어, 친구에게 공유하는 기능을 추가하였다. 추후에 푸시 알림을 통해 모든 이들에게 공유 예정이다! 피그마 링크https://www.figma.com/design/6QF0ET5hljPODCvGAsjDCg/KU%3AROOM?node-id=0-1&t=mNGiLY9dwjwJDpsq-1 후기개발자 및 PM은 대단한 것 같다. 유저 입장에서 바라보는 능력을 키워야겠다.

nGrinder 스크립트 검증 도중 Connection refused

상황nGrinder를 통해 테스트 스크립트 작성중 이었습니다. - 이메일 전송 다음과 같은 오류가 발생하였습니다.2025-02-12 17:14:42,091 ERROR java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refusedjava.net.ConnectException: Connection refused at org.apache.hc.core5.reactor.InternalConnectChannel.onIOEvent(InternalConnectChannel.java:64) at org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel...

QueryDSL로 동적 쿼리 가져오기

현재 친구 기능을 개발중이다. 친구 기능을 사용하면서, QueryDSL을 이용하여 동적 쿼리를 개선하였다.친구 도메인은 다음과 같이 저장된다. Friend@Getter@Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Friend extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "fromUser_id", nullable = false) private User fromUser; @Ma..

SecurityConfig 내 이용한 허용 URI Enum 클래스로 관리하기

왜 리팩토링 하였는가?현재 프로젝트 내에서 스프링 시큐리티를 적용중이다.특정 URI를 특정 ROLE을 가진 유저가 허용하려면, SecurityConfig 내에서 URI를 열거식으로 나열해야 한다.이 때, 관리하기 어려움이 있다. 따라서 Enum 클래스로 분리하여 리팩터링 하였다.스프링 시큐리티 설정을 할 수 있는 SecurityConfig 클래스 내에서 특정 URI를 허용하기 위해 다음과 같이 Enum 클래스로 리팩토링을 진행하였다. @SecurityConfig 클래스http.authorizeHttpRequests 내에서, AuthorizationList.LIST.getAuthroities()를 이용하여, 권한 설정을 관리하였다.@EnableWebSecurity@Configuration@RequiredA..

각 상황에 맞는 @ControllerAdvice로 예외 메시지 분리하기

@ControllerAdvice는 스프링 애플리케이션 전체에서 예외 처리 메서드를 선언할 수 있는 특수한 스프링 빈이다. 본 프로젝트에서는 @BaseControllerAdvice랑, 각각의 도메인별 @ControllerAdvice를 설정해주었다. @BaseControllerAdviceCustomException 외의 나머지 예외를 처리하기 위해 다양한 예외 상황에 대비할 수 있는 폴백 기능을 추가하였다.@Slf4j@RestControllerAdvicepublic class BaseControllerAdvice { @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler(Exception.class) public BaseErr..