[Spring Boot] 프로젝트 디렉토리 구조
기존에 사용하였던 스프링 레가시 프로젝트와 다르게
스프링 부트 프로젝트의 디렉토리 구조에 대해서 알아보려고 한다.
1. src/main/java
기존의 레가시 프로젝트와 동일하게 클래스, 인터페이스 등 자바 파일이 위치한다.
2. Test02Application 클래스
Test02 프로젝트를 생성하게 되면 만들지 않은 Test02Application 클래스가 자동으로 생성된다.
파일을 열어보면 main()만 선언되는데 해당 메서드는 SpringApplication.run()을 호출해서 웹 애플리케시션을 실행해주는 역할을 한다.
package com.kim.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Test02Application {
public static void main(String[] args) {
SpringApplication.run(Test02Application.class, args); //run은 내장된 톰캣 실행
// 1. main 메서드 실행
// 2. @SpringBootApplication의 영향으로 @ 스캔 및 등록
// 3. 10번 라인에 의해 내장 톰캣 시행
// 4. ApplicationContext 생성 == 스프링 컨테이너 실행
// -> URL 입력시 RequestMapping에 의해 작성한 메서드가 호출되는 방식
}
}
@SpringBootAplication의 역할
- Bean(객체)들을 생성할때, 싱글톤을 유지할 수 있도록 설정 및 관리
- 각각의 객체들이 생성되면 용이한 순간을 추측하여 메모리를 관리
- .jar 파일들도 생성 및 설정 관리
- @ 지정된 클래스를 스캔해서 Bean 등록 관리
3. src/main/resources
static 파일은 css, images, fonts, scripts 등 정적 리소스 파일이 위치 한다.
application.properties 파일은 웹이 실행되면 자동으로 로딩되는 파일이다. (프로젝트 전체 적용되는 속성 정보)
톰캣과 같은 WAS(포트 번호 등)의 설정이나 데이터베이스 관련 정보 등 각각으로 분리된 xml 또는 자바 기반 설정을 처리할 수 있다.
4. src/test/java
Test02ApplicationTests 클래스가 자동으로 생성되는데 해당 클래스를 사용해서 개발 단계에 알맞은 단위 테스트를 할 수 있다. 기존의 스프링과 달리, 복잡한 설정 없이 바로 테스트가 가능하다.
5. build.gradle
프로젝트를 생성할 때 Type을 그레이들(Gradle)로 선택하면 해당 파일이 생긴다. 기존 스프링에서는 pom.xml에 여러 개의 dependency를 추가해서 라이브러리를 관리하는 방식인 메이븐(Maven)을 사용하였는데 여러 문제로 요즘은 그레이들을 선호한다고 한다. 메이븐은 하나의 라이브러리를 추가하려면 긴 코드를 작성해야 하지만, 그레이들은 단 한줄의 코드로 라이브러리 추가가 가능하다.