나의 길
당연하게 생성하던 spring boot 프로젝트 구조 살펴보기 본문
이번 글은 제가 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 어노테이션에 대해 알아보도록 하겠습니다!
'Framework > Spring boot' 카테고리의 다른 글
DTO를 사용하며 정리한 내용 (0) | 2024.12.04 |
---|---|
JWT에 대한 이해 (0) | 2024.12.03 |
쿠키와 세션 및 spring security 알아보기 (0) | 2024.03.31 |
유데미(Udemy) 옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트 수강 후기! (0) | 2023.12.24 |
Spring boot + H2 사용하기 (0) | 2023.11.07 |