본문 바로가기
백엔드(Back-End)/Spring Boot

[Spring Boot] - Spring Boot의 기본적인 프로젝트 구조

by TwoJun 2023. 1. 30.

IntelliJ와 같은 IDEA 또는 spring.io에서 Spring Initializr에서 Spring Boot의 프로젝트를 생성하면 프로젝트에 대한 기본적인 구조도 같이 생성됩니다.

 

단순히 프로젝트를 생성하는 것뿐만이 아닌 해당 프로젝트의 구조에 대해서도 알아놓을 필요성이 있기 때문에 해당 포스팅을 작성하게 되었습니다.

 

 

 

 

 

 

 

1. Spring Boot 프로젝트의 기본적인 구조 살펴보기

- 우선 기본적인 프로젝트를 생성해 보도록 하겠습니다.

- spring.io에서 Spring Boot 프로젝트를 생성하였습니다.

 

 

 

1-1. 프로젝트의 전체 패키지 : com.example.TestProject

- 프로젝트의 패키지명을 다르게 해주면 위의 패키지명은 언제나 달라질 수 있습니다.

 

- 시작하는 프로젝트의 의도에 맞게 네이밍을 해 주시면 되며, src\main\java 패키지 하단에 프로젝트의 메인 패키지가 존재함을 확인할 수 있습니다.

 

- 단, 주의하실 점은 com.example.TestProject가 하나의 패키지가 아닌, com 패키지 하단에 example, example 패키지 하단에 TestProject 패키지가 존재하는 것을 주의해 주셔야 합니다.

com.example.TestProject

 

 

 

 

1-2. 웹 페이지를 구성하는 자원들의 패키지 : resources.static, resources.templates

웹 페이지의 리소스가 저장되는 resources 패키지

 

 

 

 

1-3. application.properties

- 웹 애플리케이션이 런타임 시, 다양한 환경에서 동작할 수 있도록 필요한 옵션을 제공하는데 사용됩니다.

 

- 예를 들면 데이터 베이스 설정, 로그 사용 여부 등 다양한 옵션을 설정할 수 있습니다.

application.properties

 

 

 

 

1-4. test

- 만든 클래스들이 실제로 배포, 운영되기 전에 이상없이 동작하는지 여부를 테스트하기 위해, 원하는 대로 로직 처리가 가능한지 확인할 수 있는 test 패키지입니다.

테스트 진행을 위한 test 패키지

 

 

 

1-5. .gitignore

- 형상 관리 서버에 소스를 공유하기 전에, 어떤 값들을 무시하거나 적용할지 체크할 수 있는 영역입니다.

 

 

 

 

1-6. pom.xml

- 빌드 관리 툴인 Maven이나 Gradle을 사용할 때 해당 빌드 관리 도구들의 정보를 담고 있는 파일로써 POM(Project Object Model)을 설정하고 관리하기 위한 영역으로, 프로젝트 내부의 빌드 옵션을 설정할 수 있는 pom 파일입니다.

porm.xml

 

 

 

 

1-7. pom.xml 파일에 담겨있는 정보와 여러 가지 태그들

  • <project> : Maven의 XML 네임 스페이스를 지정
  • <modelVersion> : Maven의 model Version
  • <groupId> : Group ID태그 
  • <artifactId> : Artifact ID 태그 
  • <version> : 버전명 태그
  • <packaging> 패키징 형식을 지정하는 태그
  • <name> : 프로젝트의 이름
  • <url> : Maven의 URL
  • <properties> : 프로젝트 관련 속성
  • <parent> : pom.xml의 상속에 관련된 태그
  • <dependencies> : 프로젝트가 의존하는 OPEN API 라이브러리들의 정보
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.2</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>TestProject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>TestProject</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

 

- 추가적으로 <dependencies>는 프로젝트에서 사용되는 다양한 라이브러리를 정의하는 태그이며 이러한 <dependencies> 태그에는 아래와 같은 4가지 태그가 추가적으로 존재합니다.

 

  • <groupId> : 라이브러리의 그룹 아이디
  • <artifactId> : 라이브러리의 Artifact 아이디
  • <version> : 라이브러리의 버전
  • <scope> : 라이브러리가 프로젝트 내에서 사용되는 범위

 

 

 

 

 

======================================================================

해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.

개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있습니다.

이에 대해 지적해 주시면 감사하겠습니다.

댓글