![[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 2주차 발자국](https://cdn.inflearn.com/public/files/blogs/861aaa13-1d8e-442b-920a-060a021601c2/워밍업클럽_3기.png)
[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 2주차 발자국
학습 내용
2주차 발자국입니다.
1. 데이터베이스 및 리포지토리
데이터베이스 초기화: H2 및 MySQL을 활용한 데이터베이스 설정과 application.yml 환경 분리
리포지토리 개발: JpaRepository<T, ID> 상속을 통해 기본적인 CRUD 메서드 활용
리포지토리 테스트 코드 작성: Mock을 활용한 단위 테스트 (@DataJpaTest, @MockBean)
리포지토리 성능 개선: N+1 문제 해결
2. 엔티티 및 서비스 개발
클래스 생성: 엔티티 정의 (@Entity, @Id, @GeneratedValue)
DTO 개발: 엔티티와 분리된 data class 정의로 API 응답 최적화
서비스 개발: 비즈니스 로직을 @Service 클래스에서 관리하여 Controller와 역할 분리
서비스 테스트 코드 작성: @InjectMocks와 @Mock을 활용한 Mockito 기반 테스트
3. 컨트롤러 및 API 개발
컨트롤러 개발: @RestController와 @Controller를 활용한 API 및 뷰 렌더링 처리
컨트롤러 테스트 코드 작성: MockMvc를 활용하여 API 응답 검증 (@SpringBootTest, @AutoConfigureMockMvc)
4. Thymeleaf 기반 UI 개발
부트스트랩 템플릿 적용: Start Bootstrap을 활용한 기본 레이아웃 구성
템플릿 수정
index.html: 주요 콘텐츠 및 네비게이션 구성
resume.html: 경력 및 기술 스택 표시
projects.html: 프로젝트 목록을 동적으로 표시
레이아웃: th:fragment를 활용한 네비게이션 및 푸터 분리
5. 인터셉터 개발
인터셉터 활용: HandlerInterceptor를 구현하여 요청 전/후 로직 추가
주요 기능: 인증/인가 체크, 요청 로깅, 공통 헤더 처리
Keep (만족했고, 앞으로도 지속하고 싶은 부분)
리포지토리와 서비스의 명확한 역할 분리로 유지보수성이 향상된 점을 느꼈다
Mock 테스트를 활용하여 서비스 및 컨트롤러 단위 테스트를 효과적으로 구현했는데, 이전에 워밍업클럽에서 테스트코드를 들어서 그런지 쉽게 이해가 됐다
Thymeleaf Fragment 적용으로 중복 코드 제거 및 템플릿 유지보수 능력을 길렀다
Problem (아쉬웠던 점)
jpa 성능 최적화에 대한 지식이 아직 부족한 거 같아서 김영한 강사님의 강의를 수강해볼 예정
Thymeleaf에서 동적 데이터 처리의 한계가 있어 React/Vue 같은 프론트엔드 연계를 고민해야 할텐데 관련하여 지식이 너무 적다
Try (다음에 시도해볼 점)
N+1 성능문제 개선 및 QueryDSL을 활용한 복잡한 검색 기능 최적화
API 개발 시 OpenAPI(Swagger) 문서 자동화 적용
Thymeleaf 대신 React와 연동
인터셉터 로직이 복잡해질 경우 AOP를 활용하는 방법도 고려할 필요가 있어보이는데 AOP 구현하는 미니프로젝트 해볼 예정
댓글을 작성해보세요.