개발
Day 46 - Proxy
·2분 읽기
이 글은 2026년 05월 06일 작성된 글입니다.
오늘은 테스트 롤백과 프로파일 분리, 프록시 기반 트랜잭션 흐름 복습, 그리고 명언 앱 구현 시작까지 정리했다.
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.yml5. @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/delete10. Service / Repository 분리
Controller
→ Service
→ Repository11. JPA Repository
public interface WiseSayingRepository extends JpaRepository<WiseSaying, Long> {
}12. 마크다운 렌더링
본문을 마크다운으로 출력하도록 처리했다.
✅ 정리
- 테스트는 항상 독립적으로 실행되어야 한다.
- 프로파일을 통해 환경별 설정을 분리할 수 있다.
- @Transactional은 프록시 기반으로 동작한다.
- 명언 앱 구조가 점점 실제 서비스 형태에 가까워지고 있다.