🎁 모든 강의 30% + 무료 강의 선물🎁

[인프런 워밍업 클럽 백엔드 프로젝트 스터디 3기] 2주차 발자국

[인프런 워밍업 클럽 백엔드 프로젝트 스터디 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 구현하는 미니프로젝트 해볼 예정

댓글을 작성해보세요.


채널톡 아이콘