1. JwtAuthenticationFilter Bean 등록 문제
문제 상황
애플리케이션 실행 시 다음과 같은 에러가 발생했다.
Parameter 0 of constructor in SecurityConfig required a bean of type
'JwtAuthenticationFilter' that could not be found
원인
- JwtAuthenticationFilter에 @Component가 없음
- 해당 클래스가 Bean으로 등록되지 않아 주입 실패
- 게다가 생성자에서 JwtUtil을 요구하고 있어 수동 생성도 불가능한 상태
해결 방법
공통 모듈(common)은 수정할 수 없는 상황이었기 때문에
SecurityConfig에서 직접 Bean을 생성하는 방식으로 해결
@Bean
public JwtAuthenticationFilter jwtAuthenticationFilter(JwtUtil jwtUtil) {
return new JwtAuthenticationFilter(jwtUtil);
}
그리고 SecurityFilterChain에서 주입받아 사용하도록 변경하였다.
2. 멀티모듈 의존성 문제 (CI 빌드 실패)
문제 상황 (PR에서 발생)
GitHub Actions 빌드 중 아래와 같은 에러 발생
package com.qpang.common.entity does not exist
cannot find symbol: BaseUserEntity
원인
- hub 모듈에서 common 모듈의 클래스를 사용 중
- 하지만 build.gradle에 의존성 추가가 되어 있지 않음
로컬에서는 IntelliJ 설정 때문에 동작했지만 CI 환경에서는 Gradle 기준으로 빌드되어 실패
해결 방법
hub/build.gradle에 의존성 추가
implementation project(':common')
3. Git push 충돌 (diverged branch)
문제 상황
! [rejected] (fetch first)
원인
- 원격 브랜치에 다른 팀원의 커밋이 먼저 올라간 상태
- 로컬과 원격 브랜치가 서로 다른 히스토리를 가지게 됨
해결 방법 (Rebase 사용)
git pull --rebase origin feat/domain-refactoring
git push origin feat/domain-refactoring
불필요한 merge commit 없이 히스토리를 깔끔하게 유지할 수 있었다.
4. 유스케이스 다이어그램 리팩토링
초기에는 모든 기능을 나열하면서 다이어그램이 지나치게 복잡해졌다.
문제점
- CRUD 단위로 기능이 너무 세분화됨
- 가로로 길어져 PPT에 담기 어려움
- 핵심 흐름이 보이지 않음
개선 방향
1. 도메인 중심으로 그룹화
- 회원 / 상품 / 주문 / 배송 / 허브 / 업체 / 슬랙
2. 기능 단순화
- “상품 생성/수정/삭제” → “상품 관리”로 통합
3. 핵심 흐름 유지
주문 생성 → 배송 생성 → 경로 생성 → 담당자 배정
4. 색상으로 가독성 개선
최종 다이어그램
flowchart TB
User((사용자))
subgraph System[물류 관리 시스템]
subgraph Auth[회원/인증]
UC1(회원가입)
UC2(로그인)
end
subgraph Slacka[슬랙메세지]
UC13(슬랙메세지 발송)
end
subgraph Company[업체]
UC4(업체 관리)
end
subgraph Product[상품]
UC3(상품 관리)
end
subgraph Order[주문]
UC5(주문 생성)
UC6(주문 조회)
UC12(주문목록 조회)
end
subgraph Hub[허브]
UC7(허브 관리)
end
subgraph Delivery[배송]
UC8(배송 경로 생성)
UC9(배송 생성)
UC11(배송담당자 배정)
end
end
User --> UC1
User --> UC2
User --> UC3
User --> UC4
User --> UC5
User --> UC6
User --> UC7
User --> UC13
UC6 --> UC12
UC5 --> UC9
UC9 --> UC8
UC9 --> UC11
오늘은 단순히 기능 구현이 아니라
구조를 이해하고 정리하는 과정이었던 것 같다.
- Spring에서는 Bean 등록이 얼마나 중요한지
- 멀티모듈에서는 의존성 관리가 얼마나 중요한지
- Git에서는 협업 흐름을 이해하는 것이 핵심이라는 점
을 직접 경험할 수 있었다.
'Spring 개발일지' 카테고리의 다른 글
| [개인 프로젝트] Spring Cloud Eureka & Gateway 구성 (0) | 2026.04.12 |
|---|---|
| [개인 프로젝트] Spring Boot MSA 프로젝트 구조 설계 및 기능 구현 (0) | 2026.04.11 |
| [대규모 AI 시스템 프로젝트] 추가 리팩토링 상황 (0) | 2026.04.09 |
| [대규모 AI 시스템 프로젝트] 트러블 슈팅 (0) | 2026.04.08 |
| [대규모 AI 시스템 프로젝트] 최종 개발 마무리 (0) | 2026.04.07 |