본문 바로가기

전체 글846

Query DSL 성능 개선 동적쿼리는 BooleanExpression null 반환 시 자동으로 조건절에서 제거 모든 조건이 null이 발생하는 경우는 에러 발생 가독성 향상 명확하게 무슨 역할을 하는지 알 수 있음 exist 메서드 금지 SQL 에서 exist와 count()를 비교하면 exist의 성능이 훨씬 좋음 스캔 대상이 앞에 있을 수록 더 심한 성능 차이가 발생 query dsl에서는 exist는 count() > 0 으로 실행됨 @Override public boolean exists(Predicate predicate) { return createQuery(predicate).fetchOunt() > 0; } query dsl은 결국 JPQL 빌더 역할 JPQL은 from 없이는 쿼리 생성이 불가 즉, 하위에 sel.. 2024. 1. 20.
Spring AutoConfiguration 스프링 부트 Auto Configuration 스프링 부트는 자동 구성 기능을 제공 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해주는 기능 @AutoConfiguration 자동 구성을 사용하려면 해당 어노테이션을 등록해야 한다. 자동 구성 내부에도 @Configuration 이 존재 빈을 등록하는 자바 설정 파일로 사용 가능 자동 구성이 실행되는 순서를 지정 가능 after = DataSourceAutoConfiguration.class JdbcTemplate는 DataSource가 필요하기 때문에 DataSourceAutoConfiguration 다음에 실행하도록 설정 @ConditionalOnClass if 문과 유사한 기능 제공 이런 클래스가 있는 경우에만 설정이 동작 설정이 없다면 무.. 2024. 1. 20.
Spring Validation in Kotlin data class Dto( @field:NotNull val x: Int?, @field:NotNull val s:String, ) Spring Validation @filed:NotNull 선언이 되어 있으면 객체 타입 null 로 보내면 에러 아예 json 에 포함되지 않으면 에러 Int 등 숫자 타입 Nullable 처리가 되어 있을 시 (Int?) null 로 보내면 에러 json 필드에 포함되어 있지 않으면 에러 Nullable 처리가 되어 있지 않을 시 (Int) 빈 값을 보내면, 숫자 기본 값 들어감 null 을 보내면, 숫자 기본 값 들어감 NotNull 선언 x 객체 타입 안전 연산자가 있을 시 json 필드에 포함되있지 않으면 null로 받음 null 로 보낼시 null로 받음 안전 .. 2024. 1. 14.
Spring @Async + ThreadPoolTaskExecutor 동기/비동기 동기 함수의 종료 시점과, 결과를 반환 받은 시점이 같은 경우 비동기 함수의 종료 시점과, 결과를 반환 받은 시점이 다른 경우 Spring @Async Spring 에서는 @Async 어노테이션을 통해 비동기 처리 지원 @Async 어노테이션을 적용하면 내부적으로 프록시로 동작 Caller Thread와 다른 Thread에서 비동기 작업 동작 내부적으로 proxy를 사용하기 때문에 private 메서드에 적용 불가 또한 self-invocationg 도 불가하다. → proxy 미적용 문제 Spring Context에 등록되어 있는 Async Bean 호출 Spring이 Async Bean을 Proxy로 Wrapping Spring Container에 의해 Bean으로 등록되는 시점에 프록시.. 2024. 1. 14.
[책 후기] 자바 성능 튜닝 이야기 https://product.kyobobook.co.kr/detail/S000001032977 자바 성능 튜닝 이야기 | 이상민 - 교보문고 자바 성능 튜닝 이야기 | 『자바 성능 튜닝 이야기』는 고성능 애플리케이션을 위해 고려 해야 할 복잡한 요소들을 하나하나 짚어 주는 책이다. 장애를 일으키는 반복적인 코딩 이슈부터 시스템 product.kyobobook.co.kr 과거 JVM 내부 로직과 GC에 대해 공부하고 싶어 책을 찾던 중 알게된 책이다. 막상 구매하고 읽지 않았는데, JVM 복습 겸 읽게 되었다. 자바의 신 저자인 이상민님이 작성한 책이다. 책 내용 자체는 좋지만 2013년 책이라 과거 이야기가 많다. JSP, 서블릿이 자주 나오는데, 2013년 당시에는 진짜 좋은 책이였을 것 같다. 해당 .. 2024. 1. 6.
Spring Security Filter 작성 이유 회사 프로젝트에는 Auth 모듈이 개별적으로 존재한다. 해당 모듈은 주로 Auth 기능을 담당하는데, JWT 토큰 관련 설정도 존재한다. 앱과 웹 환경이 존재하는데, 둘의 JWT Provider가 다르다. 웹 쪽에서 버그가 발견되었는데, 한쪽 로그인을 해놓고, 다시 로그인을 하면 헤더에 토큰이 존재하는 상태로 요청이 간다. 즉, 중복 로그인 처리 문제인데, 시나리오 상 토큰을 실은 상태로 로그인을 시도하면, 로그인 된 것으로 간주해야 한다. 하지만 토큰 시그니처가 맞지 않다는 에러가 발생 → 클라이언트에서도 해당 버그를 인지하지 못한 상태여서 에러 처리가 안되어 있어 다시 로그인 시도 위 과정을 반복하며 무한 로그인 시도가 되는 버그가 있었다. 이로 인해 Auth 모듈에 요청이 비정상적으로 많.. 2024. 1. 1.