이 글은 2026년 05월 07일 작성된 글입니다.

오늘은 테스트 롤백과 프로파일 분리,
프록시 기반 트랜잭션 흐름 복습,
그리고 명언 앱 구현 시작까지 정리했다.


1. 테스트는 상태를 변경하면 안 된다

테스트 실행 시 실제 DB 상태가 계속 변하면
테스트끼리 서로 영향을 주게 된다.

문제점:

  • 테스트 순서에 따라 결과 달라짐
  • 테스트 신뢰성 하락
  • 병렬 테스트 어려움

2. @Transactional + @Rollback

@Transactional
@Rollback
@SpringBootTest
class PostRepositoryTest {
}

테스트 종료 후 자동 롤백된다.


3. test 환경 기본 롤백

테스트 환경에서는 @Transactional만 붙여도 기본 롤백된다.

@Transactional

롤백 막기:

@Rollback(false)

4. 프로파일

환경별 설정 분리 가능

application-dev.yml
application-test.yml
application-prod.yml

5. @ActiveProfiles("test")

@ActiveProfiles("test")

테스트 환경에서만 test 설정 사용


6. @Profile("test")

@Profile("test")

테스트 환경에서만 특정 빈 생성


7. Member 엔티티 추가

@ManyToOne
private Member author;

게시글과 작성자 연결


8. 프록시와 트랜잭션

this.work1(); // 트랜잭션 X
self.work1(); // 트랜잭션 O

프록시를 경유해야 AOP 기능이 동작한다.


9. WiseSaying 앱 시작

엔드포인트:

/wiseSayings
/wiseSayings/1
/wiseSayings/1/delete

10. Service / Repository 분리

Controller
→ Service
→ Repository

11. JPA Repository

public interface WiseSayingRepository extends JpaRepository<WiseSaying, Long> {
}

12. 마크다운 렌더링

본문을 마크다운으로 출력하도록 처리했다.


✅ 정리

  • 테스트는 항상 독립적으로 실행되어야 한다.
  • 프로파일을 통해 환경별 설정을 분리할 수 있다.
  • @Transactional은 프록시 기반으로 동작한다.
  • 명언 앱 구조가 점점 실제 서비스 형태에 가까워지고 있다.

0개의 댓글