SpringBoot 를 배워보자/3. 스프링 부트 기본 프로젝트 구조

스프링 부트 프로젝트 디렉토리 구조

_Blue_Sky_ 2024. 9. 29. 09:00
728x90
728x90

스프링 부트 프로젝트 디렉토리 구조: 상세 가이드

소개

스프링 부트 프로젝트의 디렉토리 구조는 프로젝트의 크기와 복잡도에 따라 다양하게 구성될 수 있지만, 일반적으로 다음과 같은 기본적인 구조를 따릅니다. 이 글에서는 스프링 부트 프로젝트의 디렉토리 구조를 좀 더 자세히 살펴보고, 각 디렉토리의 역할과 중요성을 설명하겠습니다.

기본 디렉토리 구조

  • src/main/java:
    • @Configuration: 프로젝트 설정 정보를 담는 클래스
    • @Controller: HTTP 요청을 처리하는 컨트롤러 클래스
    • @Service: 비즈니스 로직을 처리하는 서비스 클래스
    • @Repository: 데이터베이스와 상호작용하는 레포지토리 클래스
    • @Entity: 데이터베이스 테이블과 매핑되는 엔티티 클래스
    • DTO(Data Transfer Object): 계층 간 데이터 전달을 위한 객체
    • Exception: 커스텀 예외 클래스
  • src/main/resources:
    • static: 정적 리소스 (CSS, JavaScript, 이미지 등)
    • templates: 템플릿 파일 (HTML, Thymeleaf 등)
    • application.properties: 프로젝트 설정 파일
    • META-INF: 메타데이터 파일
  • src/test/java:
    • 테스트 코드
728x90

각 디렉토리의 역할

  • src/main/java:
    • @Configuration: 스프링 빈을 등록하고, 프로젝트의 전반적인 설정을 관리합니다.
    • @Controller: HTTP 요청을 받아서 처리하고, 결과를 클라이언트에게 반환합니다.
    • @Service: 비즈니스 로직을 담당하며, 데이터베이스 조회, 비즈니스 로직 처리 등을 수행합니다.
    • @Repository: 데이터베이스와의 상호작용을 담당하며, 데이터베이스에서 데이터를 조회하거나 저장합니다.
    • @Entity: 데이터베이스 테이블과 매핑되는 객체로, 데이터베이스 테이블의 한 행을 나타냅니다.
    • DTO: 계층 간 데이터 전달을 위한 객체로, 불필요한 정보를 제외하고 필요한 정보만 전달합니다.
    • Exception: 프로젝트에서 발생할 수 있는 예외를 정의하고 처리합니다.
  • src/main/resources:
    • static: 정적 리소스를 저장하는 디렉토리로, 브라우저에서 직접 접근 가능한 파일들을 저장합니다.
    • templates: 템플릿 파일을 저장하는 디렉토리로, 서버에서 동적으로 생성된 데이터를 이용하여 HTML 페이지를 생성합니다.
    • application.properties: 프로젝트 설정 파일로, 서버 포트, 데이터베이스 연결 정보 등 다양한 설정을 지정합니다.
  • src/test/java:
    • 테스트 코드를 작성하는 디렉토리로, 프로젝트의 기능을 테스트하기 위한 단위 테스트, 통합 테스트 등을 작성합니다.

디렉토리 구조의 중요성

  • 코드 관리: 디렉토리 구조를 명확하게 정의하면 코드를 찾고 관리하기 쉽습니다.
  • 협업: 다른 개발자와 함께 작업할 때 코드의 위치를 쉽게 파악하고, 코드 변경 시 발생할 수 있는 충돌을 줄일 수 있습니다.
  • 유지보수: 코드의 구조가 명확하면 코드를 수정하거나 새로운 기능을 추가할 때 더 쉽게 작업할 수 있습니다.

추가적인 고려 사항

  • 패키지 구조: 디렉토리 내부에는 패키지를 사용하여 코드를 더욱 세분화할 수 있습니다. 예를 들어, domain, service, repository 패키지를 만들어 각각의 역할을 분리할 수 있습니다.
  • 레이어 구조: 계층형 아키텍처를 적용하여 코드의 의존성을 관리하고, 각 계층의 역할을 명확하게 분리할 수 있습니다.
  • 프로젝트 규모: 프로젝트의 규모가 커질수록 더 복잡한 디렉토리 구조가 필요할 수 있습니다.
  • 팀 규약: 팀 내에서 디렉토리 구조에 대한 규약을 정하여 일관성을 유지하는 것이 좋습니다.

결론

스프링 부트 프로젝트의 디렉토리 구조는 프로젝트의 성공적인 개발을 위한 중요한 요소입니다. 위에서 설명한 내용을 바탕으로 자신에게 맞는 디렉토리 구조를 설계하고, 꾸준히 개선해 나가는 것이 좋습니다.

 

728x90
728x90