Spring MVC프로젝트의 구조
오늘은 일반적인 Spring MVC프로젝트의 구조에 대해 정리해보겠습니다.
spring-mvc-project
├── src
│ ├── main
│ │ ├── java
│ │ │ ├── com
│ │ │ │ ├── project
│ │ │ │ │ ├── controller
│ │ │ │ │ ├── service
│ │ │ │ │ ├── repository
│ │ │ │ │ └── model
│ │ ├── resources
│ │ │ ├── application.properties
│ │ │ └── ...
│ │ └── webapp
│ │ ├── WEB-INF
│ │ │ ├── web.xml
│ │ │ └── spring-servlet.xml
│ │ ├── views
│ │ │ ├── index.jsp
│ │ │ └── ...
│ │ └── resources
│ │ ├── css
│ │ ├── js
│ │ ├── img
│ │ └── ...
│ └── test
│ ├── java
│ │ └── com
│ │ └── example
│ │ ├── controller
│ │ ├── service
│ │ ├── repository
│ │ └── model
│ └── resources
│ └── ...
├── target
│ ├── classes
│ ├── generated-sources
│ ├── test-classes
│ ├── surefire-reports
│ ├── <artifactId>-<version>.jar 또는 .war
│ └── maven-status
├── pom.xml (Maven) 또는 build.gradle (Gradle)
└── .gitignore (필요한 경우)
src/main/java:
프로젝트의 핵심 Java 소스 코드가 저장되는 곳입니다. Controller/ Service /Repository/ Model 등 클래스가 위치합니다.
src/main/resources:
프로젝트의 설정 파일, properties 파일, XML 파일 등의 리소스가 저장됩니다.
예를 들어, application.properties 또는 application.xml 파일이 이곳에 위치합니다.
src/main/webapp:
웹 애플리케이션의 정적 리소스 및 뷰 템플릿 파일을 저장하는 곳입니다. 기본적으로 다음의 하위 폴더들이 포함됩니다.
- WEB-INF: 웹 애플리케이션의 설정 파일들이 위치합니다.
- views 폴더, lib폴더, spring 폴더 (servlet-context.xml, root-context.xml) , web.xml등
- views: view 템플릿 파일들이 저장되는 폴더로, JSP, Thymeleaf, FreeMarker 등의 템플릿 엔진이 사용됩니다.
- resources: 정적 리소스 파일들이 저장되는 폴더로, CSS, JavaScript, 이미지 파일 등을 포함합니다.
src/test/java:
프로젝트의 단위 테스트 및 통합 테스트 코드가 저장됩니다. JUnit, Mockito, Spring Test 등의 라이브러리를 사용하여 테스트를 작성할 수 있습니다.
src/test/resources:
테스트를 위한 설정 파일 및 리소스가 저장됩니다. 예를 들어, 테스트용 프로퍼티 파일이나 데이터베이스 초기화 스크립트 등이 이곳에 위치할 수 있습니다.
target
target 폴더는 일반적으로 .gitignore 파일에 추가되어, 버전 관리 시스템에 포함되지 않도록 처리합니다.
- classes: 컴파일된 Java 클래스 파일들이 저장되는 폴더입니다. 프로젝트의 소스 코드가 컴파일되어 이곳에 위치합니다.
- generated-sources: 코드 생성 라이브러리에 의해 생성된 소스 파일들이 저장되는 폴더입니다. 예를 들어, Lombok이나 MapStruct 같은 라이브러리를 사용할 때 이 폴더에 생성된 코드가 저장됩니다.
- test-classes: 테스트 코드가 컴파일된 클래스 파일들이 저장되는 폴더입니다.
- surefire-reports: 테스트 실행 결과 리포트가 저장되는 폴더로, 주로 JUnit 테스트 결과가 이곳에 저장됩니다.
- <artifactId>-<version>.jar 또는 .war: 프로젝트의 빌드 결과물로, JAR 또는 WAR 파일 형태로 생성됩니다.
- maven-status: Maven의 빌드 상태 정보가 저장되는 폴더입니다.
pom.xml (또는 build.gradle):
프로젝트의 빌드 및 의존성 관리를 담당하는 설정 파일입니다. Maven을 사용하는 경우 pom.xml 파일이, Gradle을 사용하는 경우 build.gradle 파일이 이곳에 위치합니다.
위 구조로Spring MVC 프로젝트를 구성하면 표준화된 프로젝트 구조를 유지할 수 있으며, 코드와 리소스의 관리가 용이해지는 장점이 있습니다.
References
https://www.javaguides.net/2019/01/spring-mvc-project-structure.html
https://vitalflux.com/web-application-folder-structure-spring-mvc-web-projects/
https://codevang.tistory.com/240
'Spring' 카테고리의 다른 글
이클립스에서 Servlet 생성하기 / HttpServlet 클래스와 메소드 (0) | 2023.03.29 |
---|---|
MVC (Model-View-Controller) 패턴 (0) | 2023.03.29 |
Spring2: root-context.xml (0) | 2022.12.29 |
Spring - Context Hierarchy (0) | 2022.12.29 |
Spring 1 : web.xml (배포서술자 /Deployment Descriptor) (0) | 2022.12.29 |