Skip to content

김현수 8주차 개인 회고

Kim Hyunsu edited this page Aug 18, 2024 · 1 revision

240812

ControllerAdvice 빈 등록 순서 문제

@ControllerAdvice 의 빈 등록 순서는 Ordered.LOWEST_PRECEDENCE 이다. 그래서 GlobalExceptionHandler 를 등록하더라도 모든 DomainExceptionHandler 에서 우선순위를 낮춰야한다.

해결방안:

package camp.woowak.lab.common.advice;

import org.springframework.core.Ordered;
import org.springframework.core.annotation.AliasFor;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RestControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE - 1)
public @interface CustomRestControllerAdvice {
	@AliasFor(annotation = RestControllerAdvice.class, attribute = "basePackages")
	String[] basePackages() default {};

	@AliasFor(annotation = RestControllerAdvice.class, attribute = "basePackageClasses")
	Class<?>[] basePackageClasses() default {};

	@AliasFor(annotation = RestControllerAdvice.class, attribute = "assignableTypes")
	Class<?>[] assignableTypes() default {};

	@AliasFor(annotation = RestControllerAdvice.class, attribute = "annotations")
	Class<? extends Annotation>[] annotations() default {};
}

도메인 내의 ExceptionHandler 에는 위 anotation 을 붙여 사용한다.

그렇게 되면 그냥 @ControllerAdvice 를 사용한 Handler 보다 우선 순위가 높아지게 된다

240813

팀 내부 소통의 아쉬운 점

  • 팀원 간의 소통이 많아서 좋지만 많은 소통으로 인해 하고 있던 업무가 중단되고 까먹어 버리는 경우가 빈번히 생겼다.
  • 또한, 갑자기 말하다 보니 자료로 정리가 안되었다.

해결방안

  • 이를 해결하기 위해서 논의 내용을 Discussion 에 남기고 일정 시간 뒤에 논의 하자고 말하는 작업의 도입이 필요하다.

240814

Service 층에서 DataIntegrityViolationException 를 잡지 못하는 문제

문제 발생 배경: User ID 를 Long에서 UUID 로 바꾸면서 Service 층에서 DataIntegrityViolationException 을 잡지 못한다.

이 문제는 쓰기 지연에 대한 이해 부족에서 기인했다.

GenerateType.Indentity(AUTO_INCREMENT) 는 무조건 DB의 sequence 값을 조회해야하기 떄문에 지연쓰기를 할 수 없기 때문에 service 층에서 예외를 처리할 수 있다.

GenerateType.UUID 를 사용하면 Hibernate에서 만든 UUID 값을 넣기 때문에 쓰기 지연이 발생한다. 그래서 UUID 로 바꾸면서 문제가 발생한 것이다.

해결 방법은 saveAndFlush 를 사용해서 명확히 쓰기를 진행하면 된다.

240815

동시성 제어

낙관적 락

image

비관적 락

image

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally