Spring

    [Spring] Transactional REQUIRES_NEW 옵션에서 예외 및 Rollback

    [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..

    [Spring] 서로 다른 테스트 클래스에서 테스트 데이터를 공유하는 방법

    [Spring] 서로 다른 테스트 클래스에서 테스트 데이터를 공유하는 방법

    예제 및 테스트 코드는 github 에서 확인 가능합니다. 스프링에서 여러 테스트 클래스에서 테스트 데이터를 공유하는 방법 이번에는 Spring 환경에서 서로 다른 테스트 클래스에서 데이터를 공유하는 방법에 대해 소개해드리려 합니다. Spring Integration Test 를 작성하다 보면 테스트를 위한 데이터를 세팅하는 과정, 혹은 테스트를 위한 선행 작업 or 전처리 작업이 필요한 경우가 있습니다. 이때, 일반적으로 많이 사용하는 방법으로는 @BeforeEach, @BeforeAll 과 같은 JUnit 라이프 사이클 어노테이션을 많이 이용하게 됩니다. @BeforeEach 의 경우 테스트 마다 매번 실행되기에 테스트 간의 격리를 할 수 있어 보다 신뢰성 있는 테스트를 할 수 있다는 장점이 있지만 ..

    SpEL(Spring Expression Langauge) 사용법 + 어노테이션에 SpEL로 값 전달하기

    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, ..

    스프링 Redis 테스트 환경 구축하기 (Embedded Redis, TestContainer)

    스프링 Redis 테스트 환경 구축하기 (Embedded Redis, TestContainer)

    예제 및 테스트 코드는 github 에서 확인 가능합니다. Spring 에서 Redis를 테스트 하는 방법 이번엔 Spring 에서 Redis를 테스트 하는 방법에 대해 알아보려 합니다. Embedded Redis Test-Containers Redis를 테스트 한다면 다음과 같은 방법들을 이용해 테스트를 진행할 수 있습니다. 로컬pc에 직접 Redis를 띄워서 테스트 코드를 검증하는 경우도 많이 봤지만 그런 방식은 저는 추천드리지 않습니다. 테스트 코드는 어느 환경에서든 동일하게 실행되어야 한다고 생각합니다. 만약 로컬Pc에 Redis를 설치하여 테스트한다면 다음과 같은 문제점이 있습니다. 테스트를 수행하는 pc마다 Redis 인스턴스를 직접 구축해야 하는 번거로움이 있다. 로컬 Redis에 이미 저장..

    Spring @Valid Annotation을 이용한 유효성 검증과 예외처리

    Spring @Valid Annotation을 이용한 유효성 검증과 예외처리

    예제 및 테스트 코드는 github 에서 확인 가능합니다. Valid 사용하기 Spring 에서는 유효성 체크를 위하여 @Valid annotation 을 지원합니다. Valid는 JSR-303(Bean Validation) 표준 스펙으로서 제약조건이 있는 객체에게 Bean Validation 을 이용해 조건을 검증하는 어노테이션입니다. 사용 예제 환경 Spring boot 2.6.2 java11 build.gradle // gradle implementation('org.springframework.boot:spring-boot-starter-validation') valid 를 사용하기 위해 위 의존성을 추가합니다. spring boot 2.3 이상부터는 spring-boot-starter-web 의..