나의 길

당연하게 생성하던 spring boot 프로젝트 구조 살펴보기 본문

Framework/Spring boot

당연하게 생성하던 spring boot 프로젝트 구조 살펴보기

MoonjuLee 2024. 4. 28. 23:49

이번 글은 제가 spring initializr로 당연하게 생성하던 프로젝트 구조를 살펴보겠습니다.

 

프로젝트 구조

 

 

해당 이미지는 spring initializr에서 기본적인 Dependencies만 추가하여 생성한 기본 프로젝트입니다.

 

맨 상위의 demo는 프로젝트 이름입니다.

아래에 src/main/java 디렉토리부터 살펴보겠습니다!

해당 디렉토리의 com/example/demo 패키지 안에는 .java 파일을 작성하고 우리가 개발을 할 때는

 

계층형 구조

 

- controller

    - member

    - order

- dto

    - member

    - order

- entity

    - member

    - order

- service

    - member

    - order

- repository

    - member

    - order

 

도메인형 구조

 

- member

    - controller

    - dto

    - service

    - repository

    - entity

- order

    - controller

    - dto

    - service

    - repository

    - entity

 

위 예시와 같은 계층형 or 도메인형 or 또다른 방식의 패키지 구조를 택하여 개발을 진행합니다.(저는 개인적으로 도메인형을 선호합니다! 이유는 보기 편하고, 구조 파악이 조금 더 빨리되는 것 같습니다.)

 

다음은 기본으로 생성된 DemoApplication.java 클래스는 프로그램을 실행하는 파일이고, 생성 시 프로젝트 name + Application.java의 규칙으로 생성됩니다. 이렇게 생성된 클래스에는 반드시 어노테이션 @SpringbootApplication이 표시되어있어야 하고 이 어노테이션을 통해 스프링부트 애플리케이션이 실행됩니다. 해당 어노테이션은 다음 포스팅에서 살펴보겠습니다.

 

 

다음은 src/main/resources 디렉토리를 살펴보겠습니다!

위에 디렉토리에서는 java파일을 작성했다면, 해당 디렉토리에는 java파일을 제외한 파일을 작성합니다.

 

templates/ 디렉토리는 템플릿 파일을 저장한다. 예를 들어 thymeleaf를 의존성 추가하여 HTML 파일을 작성하고 해당 문법을 활용하여 자바 객체를 HTML 형태로 출력을 할 수 있습니다.

 

static/ 디렉토리는 이미지, css, js 등 정적 파일을 저장합니다.

 

application.properties 해당 파일은 프로젝트의 환경을 설정할 수 있고, 가장 기본적인 예로는 데이터베이스 설정, 포트 설정 등을 해당 파일에서 할 수 있습니다.(저는 해당 파일의 확장자를 .yml로 바꿔 yaml파일로 사용합니다. 이유는 들여 쓰기로 가독성이 높기 때문입니다.)

 

src/test 디렉토리에는 테스트와 관련된 파일이 저장됩니다. 위에서 살펴본 애플리케이션을 실행하는 클래스와 비슷하게 해당 디렉토리에는 DemoApplicationTests.java 파일이 생성되고, 해당 파일에 @SpringBootTest 어노테이션과 contextLoads()라는 메소드에 @Test 어노테이션이 적혀있습니다.

 

 

.gitignore 파일은 git을 사용할 때 형상관리에서 제외할 파일을 설정할 수 있습니다. 예를 들어 위에서 살펴본 application.properties 파일에 데이터베이스 설정 시 계정 패스워드가 적혀있거나 AWS를 사용할 경우의 패스워드 같은 정보 때문에 제외합니다.

 

 

 

build.gradle 파일은 Gradle이 사용하는 환경파일로, 프로젝트에 필요한 플러그인, 라이브러리, 제가 프로젝트를 생성하기 전 선택한 의존성(thymeleaf, spring-web, lombok)들이 기술되어 있습니다.

 

이외의 파일은 중요하지 않아 생략하도록 하겠습니다!

 

다음에는 애플리케이션을 구동하는 @SpringBootApplication 어노테이션에 대해 알아보도록 하겠습니다!

Comments