전체 글
[Spring] Transactional REQUIRES_NEW 옵션에서 예외 및 Rollback
예제 및 테스트 코드는 github 에서 확인 가능합니다. 트랜잭션 REQUIRES_NEW 옵션에서의 예외 및 롤백 Overview 이번에는 스프링 환경에서 @Transactional 의 Propagation 옵션인 REQUIRES_NEW 와 해당 옵션을 사용할때의 예외/롤백에 대해 알아보겠습니다. 우선 트랜잭션 전파(Transaction Propagation)에 대해 먼저 알아보겠습니다. 트랜잭션 전파는 한 트랜잭션이 실행중에 다른 트랜잭션을 실행할 경우 어떻게 동작할지를 결정 하는것입니다. 트랜잭션 전파의 종류는 다음과 같습니다. REQUIRED (Default) REQUIRES_NEW SUPPORTS NOT_SUPPORTED MANDATORY NEVER NESTED 전파옵션의 기본값은 REQUIRE..
[Kafka] 컨슈머의 Poll 동작과정 및 max.poll.records 에 대한 오해
예제 및 테스트 코드는 github 에서 확인 가능합니다. Kafka MessageListener 에서 max.poll.records 옵션의 동작 이번에는 카프카 컨슈머의 Listener 와 max.poll.records 옵션의 관계 그리고 제가 가지고 있던 오해에 대해 알아보겠습니다. 먼저 카프카 컨슈머의 구현체인 리스너는 크게 다음과 같이 나누어져 있습니다. MessageListener : Record 를 1개씩 처리한다 BatchMessageListener : Record 다수를 한번에 처리한다 그리고 max.poll.records 옵션은 다음과 같습니다. 컨슈머가 polling 시 최대로 가져갈 수 있는 record 개수 (defualt : 500개) 그렇다면 MessageListener 로 컨슈..
[JPA] OSIV (Open-Session-In-View) 동작원리 및 주의사항
예제 및 테스트 코드는 github 에서 확인 가능합니다. OSIV(Open Session In View) 동작원리 및 주의사항 이번엔 JPA/Hibernate 에서 사용되는 개념인 OSIV(Open Session In View) 에 대해 알아보겠습니다. OSIV 는 영속성 컨텍스트를 View 영역까지 열어둔다는 기능입니다. 즉, View 레이어에서도 지연로딩과 같은 영속성 컨텍스트의 특징을 사용할 수 있다는 이야기입니다. Spring Boot 에서의 OSIV 는 기본적으로 활성화된 상태입니다. 그리고 설정을 명시하지 않고 default 로 어플리케이션을 실행하게 되면 다음과 같은 경고메시지를 만나볼 수 있습니다. spring.jpa.open-in-view is enabled by default. The..
[Spring] 서로 다른 테스트 클래스에서 테스트 데이터를 공유하는 방법
예제 및 테스트 코드는 github 에서 확인 가능합니다. 스프링에서 여러 테스트 클래스에서 테스트 데이터를 공유하는 방법 이번에는 Spring 환경에서 서로 다른 테스트 클래스에서 데이터를 공유하는 방법에 대해 소개해드리려 합니다. Spring Integration Test 를 작성하다 보면 테스트를 위한 데이터를 세팅하는 과정, 혹은 테스트를 위한 선행 작업 or 전처리 작업이 필요한 경우가 있습니다. 이때, 일반적으로 많이 사용하는 방법으로는 @BeforeEach, @BeforeAll 과 같은 JUnit 라이프 사이클 어노테이션을 많이 이용하게 됩니다. @BeforeEach 의 경우 테스트 마다 매번 실행되기에 테스트 간의 격리를 할 수 있어 보다 신뢰성 있는 테스트를 할 수 있다는 장점이 있지만 ..
SpEL(Spring Expression Langauge) 사용법 + 어노테이션에 SpEL로 값 전달하기
예제 및 테스트 코드는 github 에서 확인 가능합니다. Spring Expresion Language(SpEL) 이란? 스프링 공식 문서에서는 SpEL을 다음과 같이 설명합니다. SpEL은 런타임 시 객체 그래프 쿼리 및 조작을 지원하는 강력한 표현언어이다. 출처: https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html Type Operators Arithmetic +, -, *, /, %, ^, div, mod Relational , ==, !=, =, lt, gt, eq, ne, le, ge Logical and, or, not, &&, Conditional and, or, ..