프로젝트/Ku:room 6

개발자 겸 디자이너 겸 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..

이메일 인증 기능 @Async 비동기 처리

✔️ 이메일 전송 기능에서 비동기를 도입하였다.이메일 전송 로직에서 JavaMailSender를 이용하고 있는데, 메일 지연 전송 시간이 많이 든다는 단점이 있다.아래 내용과 같이 대략 9.65s가 소요된다. ✔️  이메일을 보내는 과정 자체를 쓰레드가 기다리는 것이 아니라 요청을 보내고 쓰레드는 다른 작업을 수행하도록 변경하였다.✔️ AsyncConfig@Configuration@EnableAsyncpublic class AsyncConfig implements AsyncConfigurer { @Override @Bean(name = "mailExecutor") public Executor getAsyncExecutor() { ThreadPoolTaskExecutor exe..