본문 바로가기

Spring

Spring MVC프로젝트의 폴더 구조

 

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

 

Spring MVC Project Structure

In this article, we will discuss the recommended way to structure your Spring MVC web application projects.

www.javaguides.net

https://vitalflux.com/web-application-folder-structure-spring-mvc-web-projects/

 

Web Application Folder Structure for Spring MVC Web Projects - Data Analytics

Data, Data Science, Machine Learning, Deep Learning, Analytics, Python, R, Tutorials, Tests, Interviews, News, AI

vitalflux.com

https://codevang.tistory.com/240

 

스프링(Spring) 프로젝트의 폴더 구조

- Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 먼저 Spring MVC 템플릿으로 스프링 프로젝트를 하나 생성해보겠습니다. 빌

codevang.tistory.com