-
JHipster 시리즈 6화 - JHipster 프로젝트 구조와 코드 흐름 분석하기언어 및 프레임워크/JHipster 2025. 5. 15. 19:35728x90
JHipster로 생성된 Spring Boot + React 기반 프로젝트의 전체 디렉토리 구조, 주요 모듈, 코드 흐름을 실무 수준에서 상세하게 해부합니다. 실전 개발 시 반드시 알아야 할 핵심 구조 가이드.
왜 프로젝트 구조를 이해해야 하는가?
JHipster는 단순 템플릿이 아닙니다.
자동으로 구성되는 백엔드 + 프론트엔드 + DevOps + 보안을 포함하는 완성형 프로젝트입니다.
하지만 규모가 커지고 팀이 늘어나면 구조를 이해하고, 커스터마이징할 수 있는 역량이 핵심 경쟁력이 됩니다.
이번 글에서는 실무 관점에서 JHipster 프로젝트의 전체 구조와 코드 흐름을 상세하게 분석합니다.
JHipster 전체 구조 (Monolith 기준)
├── src/ │ ├── main/ │ │ ├── java/ → Spring Boot 백엔드 │ │ ├── resources/ → 설정파일, 메시지, SQL │ │ └── webapp/ → React 프론트엔드 │ └── test/ → 테스트 코드 ├── build.gradle or pom.xml → 빌드 도구 ├── package.json → 프론트 의존성 ├── .yo-rc.json → JHipster 설정 파일 ├── Dockerfile, docker-compose/ → 컨테이너 설정 └── README.md
백엔드(Spring Boot) 구조
1. 엔트리 포인트
src/main/java/com/example/demo/DemoApp.java
- Spring Boot Application 시작 지점
- @SpringBootApplication으로 모든 설정 포함
2. 핵심 패키지
패키지설명
config Spring Security, Database, Cache 설정 domain Entity 클래스 (JPA) repository JPA Repository (데이터 접근) service Business Logic web.rest REST Controller security JWT, OAuth2 보안 설정
JHipster 표준 코드 흐름
Request → REST Controller → Service → Repository → DB
예시:
@RestController @RequestMapping("/api/books") public class BookResource { private final BookService bookService; @GetMapping public List<Book> getAllBooks() { return bookService.findAll(); } }
3. Entity 생성 예시
@Entity @Table(name = "book") public class Book { @Id @GeneratedValue private Long id; @NotNull private String title; private String author; }
JDL → Entity → Repository + REST + Front 자동 생성 구조입니다.
프론트엔드(React) 구조
src/main/webapp/app/ ├── account/ → 로그인, 회원가입 ├── admin/ → 관리 기능 ├── entities/ → CRUD Entity 화면 ├── shared/ → 공통 컴포넌트 ├── modules/ → 커스터마이징 페이지 권장 위치 ├── app.tsx → 전체 Router 설정 ├── config/ → API URL, i18n 등 설정
라우팅 구조
<Route path="/entity/book" element={<Book />} /> <Route path="/account/login" element={<Login />} />
- react-router-dom 기반의 SPA 라우팅
- Redux Toolkit + Axios로 API 호출
DevOps 및 기타 설정 파일
파일명용도
.yo-rc.json JHipster 생성 옵션 저장 Dockerfile Application Docker 이미지 빌드 docker-compose/ DB, Keycloak, Elastic 등 연동 설정 application-dev.yml 개발 환경별 Spring Boot 설정 application-prod.yml 운영 환경 설정 package.json 프론트 의존성 관리 build.gradle/pom.xml 백엔드 의존성 관리
전체 코드 흐름 요약
사용자 → React 페이지 → Redux Dispatch → Axios → REST API (Spring Controller) → Service → Repository → DB
프론트와 백엔드는 완전히 분리되지만,
JHipster에서는 도메인 모델과 API 스펙이 양쪽에서 동기화되어 있어 빠른 개발이 가능합니다.
실전 팁: 실무에서 반드시 알아야 할 포인트
항목설명
Entity 확장 JDL → Entity 추가 → 코드 자동 생성 Security 설정 SecurityConfiguration.java 참고 Custom Module app/modules 폴더 생성 후 페이지 추가 Dev 환경 분리 application-dev.yml 활용 API 연동 수정 axios.ts 및 Redux Slice 구조 참고
대형 프로젝트 사례
한 SaaS 팀에서는 JHipster의 기본 구조를 유지한 채,
다음과 같이 분리 전략을 사용했습니다:
- 백엔드 → 별도 Git 저장소 분리 (Spring Domain 유지)
- 프론트엔드 → Monorepo + Storybook + Tailwind 적용
- DevOps → GitHub Actions + Docker + Kubernetes 배포
결과적으로 초기 구축 기간 4주 → 1주로 단축
유지보수 비용 약 35% 절감 효과를 얻었습니다.
마치며 – JHipster는 조직화된 구조다
JHipster의 가장 큰 장점은:
- 작은 팀도 엔터프라이즈 수준의 표준 구조를 바로 쓸 수 있고
- 커스터마이징 시에도 체계적으로 확장할 수 있다는 점입니다.
이번 편을 통해 구조를 이해했다면,
다음 단계에서는 마이크로서비스로 확장하거나 코드 생성기를 직접 확장하는 도전에 나설 수 있습니다.
다음 화 예고
JHipster 시리즈 7화 - 마이크로서비스 구조 전환 – Gateway와 Service Registry 실습
모놀리식에서 Microservice로 구조를 전환하는 방법, Gateway 설정, Service Registry 활용법을 실습 중심으로 정리합니다.
728x90'언어 및 프레임워크 > JHipster' 카테고리의 다른 글
JHipster 시리즈 5화 - React 프론트엔드 커스터마이징 실전 가이드 (0) 2025.05.12 JHipster 시리즈 4화 - Spring Security와 JHipster의 인증 구조 이해 (0) 2025.05.09 JHipster 시리즈 3화 - JDL을 이용한 Entity 모델링과 CRUD 생성기 실습 (0) 2025.05.07 JHipster 시리즈 2화 - JHipster 설치와 프로젝트 생성 – 모놀리식 앱 실습 (1) 2025.05.05 JHipster 시리즈 1화 - JHipster란 무엇인가? (1) 2025.05.02