슬기로운 개발생활

[Spring Boot] 프로젝트 구조 살펴보기

by coco3o
반응형

스프링 부트를 공부하기에 앞서 스프링 부트의 전체적인 프로젝트 구조에 대해 알아보도록 하겠습니다.

 

먼저, demo 프로젝트를 생성했습니다. demo 프로젝트의 구조는 아래와 같습니다.

1. src/main/java 디렉토리

클래스, 인터페이스 등 자바 파일이 위치하는 디렉토리입니다.


2. DemoApplication 클래스

DemoApplication 파일을 열어보면, main 메소드가 선언되어 있는 것을 확인할 수 있습니다.

main 메소드는 웹 어플리케이션을 실행하는 역할을 해줍니다.

@SpringBootApplication 어노테이션은 main 클래스에 있는 어노테이션이고,

해당 어노테이션은 다음의 세 가지 어노테이션으로 구성되어 있습니다.

어노테이션 설명
@EnableAutoConfiguration 스프링 부트는 개발에 필요한 몇 가지 필수적인 설정들의 처리가 되어 있는데,
해당 어노테이션에 의해 다양한 설정들의 일부가 자동으로 완성됩니다.
@ComponentScan 기존의 XML 설정 방식의 스프링은 빈(Bean)의 등록 및 스캔을 위해 수동으로 ComponentScan을 여러 개 선언하는 방식을 사용 했었는데,
스프링 부트는 해당 어노테이션에 의해 자동으로 컴포넌트 클래스를 검색하고, 스프링 어플리케이션 콘텍스트( IoC 컨테이너 )에 빈(Bean)으로 등록합니다.
간단하게 의존성 주입 과정이 더욱 간편해졌다고 생각할 수 있겠습니다.
@Configuration 해당 어노테이션이 선언된 클래스는 자바 기반의 설정 파일로 인식됩니다.
XML 설정에 어마무시한 시간을 소모하지 않아도 됩니다.
물론, XML 기반의 설정을 전혀 사용하지 않는 것은 아닙니다.

3. src/main/resources 디렉토리

templates : 

기존의 스프링은 HTML 내에 자바 코드를 삽입하는 JSP의 방식을 사용하였습니다.

디렉토리의 위치도 웹 디렉토리에 해당하는 src/main/webapp 안에 존재하였습니다. 

하지만, 이러한 방식은 war 파일로 패키지화 되었을 경우에만 정적 리소스를 정상적으로 사용할 수 있다고 합니다.

그러한 이유로 스프링 부트는 src/main/resources 디렉토리 내에서 화면과 관련된 파일을 관리하는 것으로 생각할 수 있습니다.

스프링 부트는 타임리프(Thymeleaf) 템플릿 엔진의 사용을 권장하는데, 타임리프는 JSP와 마찬가지로 HTML 내에서 데이터를

처리하는 데 사용됩니다. 

즉, 타임리프(Thymeleaf)의 파일들(HTML파일이 동적일 때, 서버에서 데이터를 다룰 때)

templates 폴더에서 사용합니다.

 

static : 

정적 컨텐츠는 서버에서 뭐 하는거 없이 파일을 웹브라우저에 그대로 내려주는 것이고,

해당 폴더에는 css, fonts, images, plugin, scripts 등의 정적 리소스 파일이 위치합니다.

스프링 부트는 기본 설정으로 정적 컨텐츠를 /static에서 찾아서 제공을 합니다.

 

application.properties :

해당 파일은 웹 어플리케이션을 실행하면서 자동으로 로딩되는 파일입니다.

예를 들어 톰캣(Tomcat)과 같은 WAS(포트 번호, 콘텍스트 패스 등)의 설정이나, 데이터베이스 관련 정보 등 각각으로

분리되어 있는 XML 또는 자바 기반의 설정을 해당 파일에 Key - Value 형식으로 지정하여 처리할 수 있습니다. 


4. src/test/java 디렉토리

해당 디렉토리에는 DemoApplicationTests 클래스가 생성되어 있는데,

해당 클래스를 이용해서 각각의 개발 단계에 알맞은 테스트를 진행할 수 있습니다.

기존의 스프링과 다르게 복잡한 설정 없이 테스트가 가능합니다.


build.gradle

해당 프로젝트의 Type을 그래들(Gradle)로 선택

메이븐(Maven)은 pom.xml

메이븐(Maven)과 그래들(Gradle)의 개념 및 비교


참고

반응형

블로그의 정보

슬기로운 개발생활

coco3o

활동하기