Spring Initializer
。Spring Boot Project 생성 start.spring.io
。Spring Boot 3은 최소한 Java 17의 버전을 필요로 한다.
。SNAPSHOT 버전은 Spring Boot Team이 현재 개발하는 버전으로서 새로운것을 배울때 사용은 부적합.
。Group ID : 프로젝트 그룹을 설정
▶ 프로젝트를 구분하는 용도로 보통 회사명을 기입 ex ) com.KTCloud
。Artifact ID : 프로젝트 내 최종 결과물 이름
▶ 보통 프로젝트명을 기입
。Name : 프로젝트 이름
。Description : 프로젝트 설명
。Package name : 패키지명
Spring Project Package 기본 구성
src/build.gradle :
。Spring Project에 필요한 library , Dependency를 설정 시 사용하는 파일
src/main/java :
。Java Source Code가 위치하는 디렉토리
src/main/java/{패키지}/ 별 기능별 디렉토리 명명법

。디렉토리명은 모두 소문자 작성이 관례
컨트롤러 : ~/controller/도메인/컨트롤러클래스
。Controller Layer를 저장하는 디렉토리
▶ @Controller 및 @RestController가 선언된 클래스를 저장
서비스 : ~/service/도메인/서비스클래스
。Service Layer를 저장하는 디렉토리
▶ 서비스 인터페이스 및 @Service가 선언된 클래스를 저장
레포지토리 : ~/service/도메인/레포지토리모듈
。Repository Layer의 DAO Class를 저장하는 디렉토리
▶ Repository와 관련된 @Repository가 선언된 JpaRepository 인터페이스 및 구현 클래스 등을 저장
설정 : ~/config/설정모듈
。설정 역할의 클래스를 저장하는 패키지
▶ DB Connection의 접속정보를 저장한 설정 클래스 등이 포함
。Spring에서는 주로 @Configuration이 선언된 Class를 저장
。설정파일은 이름Configuraion.Class 로 설정
인프라 : ~/infra/모듈
。각 Infra 모듈 ( 외부 API 모듈 등 )을 저장하는 디렉토리
~/constants/상수모듈
。각 enum 등을 저장하는 디렉토리
~/exception/예외처리모듈
。각 ExceptionHandler 등을 저장하는 디렉토리
~/util/유틸모듈
。사전 검증용 메서드 등 개발자가 정의하여 공통적으로 유용하게 사용하는 모듈들을 저장
。코드블록 선택 후 F6을 눌러서 Util 클래스를 새로 생성 후 저장

~/stereotype/모듈
。여러 클래스에서 공통적으로 사용중인 기능을 정형화하는 모듈을 저장하는 패키지
▶ JdbcTemplate 처럼 템플릿 메서드 패턴 등을 사용하여 각 클래스에서 공통기능을 사용함으로써 발생하는 중복 코드를 제거하는 용도의 모듈 등이 저장됨.
도메인 ( = 비즈니스모델) : ~/domain/도메인클래스
。각 DB Entity 및 Business Model 역할의 도메인 클래스를 저장하는 디렉토리
DTO : ~/domain/dto
。DTO 역할의 Class를 저장하는 디렉토리
。~/domain/dto/request : Request DTO를 저장
。~/domain/dto/response : Response DTO를 저장
src/main/resources :
。Spring Project의 Configuration 파일과 resource가 위치.
(ex : html , css , 설정( application.properties ) 파일 등 )
application.yml :
Application의 log level , profile , actuator 등 의 많은 세부설정을 정의하는 configuration file
▶ application.yml로 설정이 가능
src/main/resources/static :
。이미지, js 등의 정적파일을 저장하는 디렉토리
▶ Spring Boot는 js 파일 참조 시 src/main/resources/static을 기준으로 참조
src/main/resources/templates :
。 템플릿 관련 파일( html, jsp 등 )을 저장하는 디렉토리
▶ 주로 서버에서 사용됨
。View Resolver에서 jsp 파일 또는 thymeleaf를 조회시의 기본디렉터리 경로
src/test/java :
。어플리케이션의 전반적인 Test code가 위치하는 디렉토리
▶ JUnit, Mockito등에 의해 수행되는 Unit Test Code를 해당 디렉토리에 작성.
。Business Logic이 구현된 src/main/java의 하위 package 경로와 동일
。src/main의 Class에서 ctrl + shift + T의 단축키를 입력 시 해당 Class 대응하는 Test Class로 진입 가능
▶ Test Class명은 메인Class명Test로 지정
。 어플리케이션 실행 시 src/test 내 파일을 참조할 수 없다
▶ gradle에 의해 빌드 시 해당 src/test 파일이 포함되지않으므로, src/test 파일을 참조할 수 없다.
Spring Project 명 변경
。Project 내 settings.gradle에서 rootProject.name=이름으로 변경