스프링부트 프로젝트 구조 및 설정파일

2024. 2. 3. 13:10스프링

반응형

여기서는 스프링부트 프로젝트 구조 및 설정파일에 대한 설명을 하겠다. 설명할때 사용한 프로젝트는 이전글 "스프링부트 프로젝트 생성하기" 에서 생성한 프로젝트로 설명할거다. 아래 링크를 참조

https://just-do-it-man.tistory.com/152

 

스프링부트 프로젝트 생성하기

준비사항 1) Java 설치 (스프링은 자바로 이루어진 프레임워크!!! 따라서 자바 설치 필요) 2) IDE 설치(스프링부트 프레임워크를 이용해서 개발을 하기 위해서 개발을 위한 도구가 필요하다. 그 도구

just-do-it-man.tistory.com

 

 

밑에 그림에 각 설명할 부분을 번호를 부여 설명하겠다.

 

 

1) src/main/java

패키지 groupInfo.study에 자바 파일을 작성한다. 예를들어 Controller, Service, DTO 등등 자바 소스들은 여기다가 작성하면 된다고 생각하면 된다. 패키지 이름은 스프링부트 프로젝트 생성될때 설정에서 작성한 패키지명이니 프로젝트마다 패키지명이 다르다.

스프링부트 프로젝트를 생성해서 groupInfo.study 패키지 밑에 기본으로 있는 java 파일이 있다.

이 java 파일 이름은  "<프로젝트명> + Application"으로 스프링부트 어플리케이션의 시작을 담당하는 파일이다.  이 파일에 들어가보면 main 메소드가 있고 이 메소드를 실행하면 스프링부트 프로젝트가 실행되는거다.

실제로  StudyApplication.java 파일 우클릭 => Run as => Java Application 을 클릭하면 실행된다. 만약 실행에 실패했다면 대부분 원인이 8080 포트를 이미 사용하고 있어 충돌나는거다. 사진에서 2번에 있는 application.properties 에 포트번호를 다른걸로 설정해주고 다시 실행해주면 잘될거다. application.properties에 

server.port=80

라고 적어주고 저장하면 80포트로 수정된다. 80이 아니더라도 원하는 다른 포트 번호로 수정해 충돌이 나지 않게하면 된다.

 

2) src/main/resources 

자바 파일을 제외한 모든 파일들은 src/main/resources에 작성한다. 

templates 에 HTML과 같은 템플릿 파일들을 저장한다.

static에 css 파일, js 파일 이미지파일 (.png, .jpg ..)들이 저장된다.

application.properties에서 프로젝트의 환경 및 데이터베이스 설정을 여기서 한다.

 

3) src/test/java

여기서는 테스트하는 파일들이 위치한다. 위에 1번 처럼 프로젝트 생성될때 설정에서 작성한 패키지명에 테스트  파일이 들어가있다. 개발을 하다가 테스트를 할때 여기다가 파일들을 만들어서 테스트를 할 수 있다.

 

4) build.gradle

프로젝트를 위해 추가한 플로그인이나 라이브러리가 여기에 기술된다.

 

밑에 소스를 보면

java{ } 안에 자바 버전 정보가 있다. 밑에 소스는 17이라는걸 볼 수 있다. 

 

그리고 dependencies{ } 여기서 라이브러리를 추가허가나 삭제할 수 있다. 

 

타임리프 템플릿엔진이 추가된것

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'   

스프링웹 라이브러리가 추가된것

implementation 'org.springframework.boot:spring-boot-starter-web'  

테스트할때 사용하는 junit 라이브러리 추가된것
testImplementation 'org.springframework.boot:spring-boot-starter-test' 

 

타임리프랑 스프링웹 라이브러리는 프로젝트 생성시 내가 추가해준건데 junit 라이브러리는 내가 추가해준적이 없다. 이건 기본적으로 프로젝트 생성시 추가되어 있는거다.

 

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.1'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'groupInfo'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}
반응형