일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- myBatis
- Spring Boot
- Linux
- Ubunt
- JDBC TEMPLATE
- pointcut
- Framework
- Dependency Injection
- XML
- @Spring-Test
- STS
- 컨테이너
- AOP
- @test
- Spring JDBC
- @AspectJ
- SpringJDBC
- @JUnit
- spring framework
- POJO
- JdbcTemplate
- 마이바티스
- Di
- 리눅스
- spring
- java
- spring aop
- java spring
- unix
- 프로퍼티
Archives
- Today
- Total
개키우는개발자 : )
스프링 부트의 자동 구성과 테스트로 전환 본문
반응형
요약 및 핵심 개념
이 문서는 직접 작성했던 스프링 부트 코드와 스프링 부트의 자동 구성 기능이 실제로 동일하게 동작하는지 검증하는 과정을 설명합니다. 또한, 스프링 부트의 테스트 프레임워크를 활용해 자동 구성 및 테스트 코드를 간소화하고, 자동 구성의 원리를 이해하는 데 중점을 둡니다.
핵심 내용
1. 직접 작성한 코드와 스프링 부트 자동 구성 비교
- 자동 구성 코드 삭제:
- 이전에 작성한 모든 수동 구성 코드(데이터 소스, JDBC 템플릿, 서블릿 컨테이너 등)를 삭제.
- 스프링 부트의 기본 자동 구성을 통해 동일한 기능을 구현 가능 여부 확인.
- 스프링 부트의 동작 방식 확인:
- @SpringBootApplication에 포함된 @EnableAutoConfiguration 및 @ComponentScan 애노테이션을 통해 자동 구성 원리를 이해.
2. 테스트 환경에서 스프링 부트 활용
- 프로퍼티 설정:
- 스프링 부트의 자동 구성이 요구하는 표준 프로퍼티 이름(spring.datasource.driverClassName, spring.datasource.url, spring.datasource.username, 등)으로 수정.
- 기존의 간단한 프로퍼티를 스프링 부트 스타일에 맞게 변경.
- 테스트 코드 변경:
- 스프링 부트가 제공하는 테스트 유틸리티(@SpringBootTest, @JdbcTest)로 전환.
- 테스트 수행 시 임베디드 데이터베이스를 활용하여 빠른 수행 및 독립성 유지.
3. 스프링 부트의 테스트 도구 활용
- @JdbcTest 활용:
- JDBC 관련 빈만 로딩하여 데이터 소스 및 템플릿 관련 테스트를 빠르게 수행.
- 임베디드 데이터베이스를 사용하여 빠른 테스트 환경 제공.
- @SpringBootTest 활용:
- 애플리케이션 컨텍스트를 전체적으로 로드하여 통합 테스트 수행.
- 웹 환경을 포함하거나 제외하는 옵션(webEnvironment)을 설정하여 테스트 환경을 구성.
4. 테스트 시 주요 이슈와 해결
- 트랜잭션 롤백 문제:
- @Transactional 애노테이션이 없을 경우, DB 변경 사항이 테스트 간 영향을 미칠 수 있음.
- 테스트에서 데이터 독립성을 유지하기 위해 롤백 설정 필요.
- 임베디드 DB 교체:
- 테스트 시 운영용 DB 대신 임베디드 DB를 사용하여 속도와 효율성 향상.
- 자동으로 설정된 임베디드 DB가 테스트 코드에 적합한지 확인.
- 서버 띄우기 테스트:
- webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT를 사용하여 실제 톰캣 서버를 지정된 포트로 실행.
- API 레벨에서의 동작을 확인하는 통합 테스트 수행.
5. API 테스트 및 자동 구성 검증
- API 동작 검증:
- 수동 테스트와 API 테스트를 통해 HelloService의 카운트 기능이 제대로 동작하는지 확인.
- 톰캣 서버를 실행하지 않고도 테스트 환경에서 API 호출 가능.
- 자동 구성의 동일성 확인:
- 직접 작성한 코드와 스프링 부트의 자동 구성이 동일하게 동작하는지 확인.
- 자동 구성 클래스가 적절히 작동하여 서블릿 컨테이너, 데이터 소스, JDBC 템플릿 등이 정상적으로 초기화됨을 검증.
결론
- 스프링 부트의 자동 구성 검증:
- 직접 작성한 코드와 스프링 부트 자동 구성이 동일한 결과를 제공함을 확인.
- 표준화된 프로퍼티 설정과 자동 구성 클래스의 동작을 확인.
- 테스트 환경 개선:
- 스프링 부트 테스트 유틸리티(@SpringBootTest, @JdbcTest)를 활용하여 빠르고 독립적인 테스트 환경 구성.
- 트랜잭션 롤백을 설정하여 테스트 간 데이터 간섭 방지.
- API 및 통합 테스트:
- API 호출 테스트와 통합 테스트를 통해 실제 서비스 및 데이터베이스의 동작을 검증.
- 다음 단계:
- 스프링 부트의 다양한 자동 구성 기능(JPA, Redis, 클라우드 서비스 등)을 활용하는 방법을 학습.
- 자동 구성 동작 원리와 커스터마이징 전략을 탐구하여 효과적으로 제어하는 방법을 배울 예정.
스프링 부트의 기본 원리와 자동 구성 동작을 깊이 이해한 이 과정을 기반으로, 다음 단계에서는 더 복잡한 기능을 다룰 수 있는 준비를 마쳤습니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션11 - 스프링 부트 자세히 살펴보기' 카테고리의 다른 글
Web 자동 구성 살펴보기 (0) | 2025.01.04 |
---|---|
Core 자동 구성 살펴보기 (1) | 2025.01.04 |
자동 구성 조건 결과 확인 (0) | 2025.01.04 |
자동 구성 분석 방법 (0) | 2025.01.04 |
스프링 부트 자세히 살펴보기 (0) | 2025.01.04 |
Comments