spring(17)
-
@Transactional(readOnly = true) 내부에 쓰기 코드가 있다면?
문득, @Transactional(readOnly = true) 내부에 쓰기 코드가 있다면 어떻게 될지 궁금했다.해당 내용을 정리하기 전, @Transactional(readOnly = true) 의 장점을 분석해보자.@Transactional(readOnly = true) 장점이유 1. Snapshot을 따로 저장하지 않음이는 JPA의 영속성 컨텍스트가 수행하는 변경감지와 관련이 있다.변경 감지(Dirty Checking)란?영속성 컨텍스트는 Entity 조회 시 초기 상태에 대한 Snapshot을 저장한다.트랜잭션이 Commit될 때, 초기 상태의 정보를 가지는 Snapshot과 Entity의 상태를 비교해 변경된 내용에 대해 update query를 생성해 쓰지 지연 저장소에 저장한다.그 후, 일괄..
2025.06.17 -
Spring Boot3 403, 401 - MockMvc, Spring Security Test
참조 코드https://suhyeon-developer.tistory.com/38https://tlatmsrud.tistory.com/77https://velog.io/@wonizizi99/SpringSpring-security-CSRF란-disablehttps://velog.io/@jmjmjmz732002/Springboot-Junit5-컨트롤러-테스트-401-에러를-마주쳤다https://velog.io/@tjdtn0219/SpringSecurity적용-후-Controller-테스트코드-작성-시-발생했던-오류들-Feat.-Junit5-csrfhttps://lemontia.tistory.com/1088MockMvc를 활용하여 테스트하는 방법을 알아봤으니, 이제 내 프로젝트에도 적용해보자.@RestCont..
2025.06.12 -
Spring Boot MockMvc 이해하기 : 테스트 흐름 및 사용예제
해당 글에서는 MockMvc에 대해 이해하고 활용하는 방법에 대해 확인해보자.MockMvc스프링 프레임워크에서 제공하는 웹 애플리케이션 테스트용 라이브러리를 의미이를 사용하면 웹 애플리케이션의 다양한 컴포넌트에 대해 테스트 가능MockMvc를 사용하면 HTTP 요청을 작성하고 컨트롤러의 응답을 검증이를 통해 통합 테스트를 실행하지 않고도 컨트롤러의 동작을 확인가능MockMvc를 이용한 테스트 목적MockMvc를 이용하여 컨트롤러의 동작을 테스트하는 데 사용컨트롤러의 엔드포인트를 호출하여 HTTP 클라이언트의 요청을 모방하고 적절한 응답을 확인하기 위해 테스트를 수행이러한 테스트 과정을 통해 애플리케이션의 서비스 로직이나 API 엔드포인트가 의도한 대로 동작하는지 확인하고, 버그를 발견하고 수정하는 데 도..
2025.06.12 -
Spring Boot Junit5 이해하기 - 환경 구성 및 활용 예제
해당 글에서는 이전에 습득한 이론을 바탕으로 Spring Boot JUnit을 다양한 예제를 통해서 익혀보자.Spring Boot 2.2 + 이상 버전부터는 기본적으로 의존성이 추가되어 있기에 별도의 세팅은 하지 않는다.클래스/ 테스트 전후 수행 테스트 : @BeforeAll, @AfterAll, @BeforeEach, @AfterEach테스트 수행 구조@BeforeAll, @AfterAll 어노테이션을 이용하여 테스트 클래스의 시작/후에 단 한번 호출@BeforeEach, @AfterEach 어노테이션을 이용하여 매 @Test 전후에 호출어노테이션 설명@BeforeAllJUnit 테스트 클래스 내에서 모든 테스트 메소드 실행 전에 한 번 실행되는 메소드를 정의하는 데 사용됩니다. 보통 테스트 환경의 설..
2025.06.10 -
Spring Boot JUnit5 이해하기 - 이론 및 구조
해당 글에서는 JUnit에 대해 이해하고 Spring Boot 환경에서 환경을 구성하는 방법에 대해 알아보고자 한다.JUnit5Java언어에서 독립된 단위 테스트(Unit Test)를 지원해주는 프레임워크JUnit Jupiter의 주요 어노테이션어노테이션 설명@Test테스트 메서드를 정의하는 데 사용되는 어노테이션입니다. 이 어노테이션이 지정된 메서드는 JUnit Jupiter에서 테스트로 실행됩니다.@ParameterizedTest매개변수화된 테스트를 정의하는 데 사용되는 어노테이션입니다. 이 어노테이션이 지정된 메서드는 여러 매개변수를 사용하여 반복적으로 실행됩니다.@BeforeEach각각의 테스트 메서드가 실행되기 전에 실행되는 코드를 정의하는 데 사용되는 어노테이션입니다.@AfterEach각각의 ..
2025.06.10 -
Swagger 세팅 시 트러블 슈팅 (feat. Spring Boot 3, Spring Security)
이번에는 Spring Boot 3이 기본적으로 적용됨에 따라, 이에 따른 Swagger 세팅 방식을 알아보고자 한다. 참조 링크https://adjh54.tistory.com/561https://jong-bae.tistory.com/12https://www.baeldung.com/java-spring-security-permit-swagger-uihttps://dev-meung.tistory.com/entry/해커톤-HY-THON-트러블슈팅-Swagger-500-에러-Failed-to-load-API-definitionhttps://velog.io/@sinryuji/Swagger와-RestControllerAdvice-충돌-문제https://velog.io/@hotdog1029/Spring-Boot-3...
2025.06.07