Spring
[Spring] @Component vs @Configuration
예제 및 테스트 코드는 github 에서 확인 가능합니다. @Component VS @Configuration안녕하세요. 스프링을 사용하면서 위의 두 어노테이션을 자주 사용하고 계실텐데요.저도 마찬가지로 두 어노테이션을 자주 사용하지만 Bean 으로 선언하거나 생성할 수 있다는 것만 알고있었지둘 사이에 어떤 차이가 있는지 그리고 어떤 상황에 사용해야 할지에 대해서는 잘 알고있지 못했습니다.그래서 둘 사이의 용도 그리고 동작방식에 어떤 차이가 있는지 좀 더 알아보기 위해 글을 작성하게 되었습니다. @Component먼저 @Component 에 대해 간단하게 어떤 어노테이션인지 알아보겠습니다.스프링 공식문서에서는 @Component 를 다음과 같이 이야기 합니다.Indicates that the annot..
[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] 서로 다른 테스트 클래스에서 테스트 데이터를 공유하는 방법
예제 및 테스트 코드는 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, ..
스프링 Redis 테스트 환경 구축하기 (Embedded Redis, TestContainer)
예제 및 테스트 코드는 github 에서 확인 가능합니다. Spring 에서 Redis를 테스트 하는 방법 이번엔 Spring 에서 Redis를 테스트 하는 방법에 대해 알아보려 합니다. Embedded Redis Test-Containers Redis를 테스트 한다면 다음과 같은 방법들을 이용해 테스트를 진행할 수 있습니다. 로컬pc에 직접 Redis를 띄워서 테스트 코드를 검증하는 경우도 많이 봤지만 그런 방식은 저는 추천드리지 않습니다. 테스트 코드는 어느 환경에서든 동일하게 실행되어야 한다고 생각합니다. 만약 로컬Pc에 Redis를 설치하여 테스트한다면 다음과 같은 문제점이 있습니다. 테스트를 수행하는 pc마다 Redis 인스턴스를 직접 구축해야 하는 번거로움이 있다. 로컬 Redis에 이미 저장..