Spring Boot Project Structure

(ChatGPT에게 부탁한 구성도)

 

my-spring-boot-project

├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── myproject
│   │   │               ├── MySpringBootApplication.java
│   │   │               ├── controller
│   │   │               │   └── MyController.java
│   │   │               ├── service
│   │   │               │   └── MyService.java
│   │   │               ├── repository
│   │   │               │   └── MyRepository.java
│   │   │               ├── model
│   │   │               │   └── MyModel.java
│   │   │               ├── dto
│   │   │               │   └── MyDto.java
│   │   │               └── config
│   │   │                   └── MyConfig.java
│   │   ├── resources
│   │   │   ├── application.properties
│   │   │   └── static
│   │   │       └── (HTML, CSS, JavaScript와 같은 정적 파일)
│   │   │   └── templates
│   │   │       └── (Thymeleaf 템플릿 등)
│   │   │   └── (logback.xml 등 기타 설정 파일)
│   ├── test
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── myproject
│   │   │               └── (테스트 클래스)
│   │   └── resources
│   │       └── (테스트 리소스)

├── .gitignore
├── mvnw
├── mvnw.cmd
├── pom.xml
└── README.md

 

 

1. src/main/java

 

- com/example/{projectname} : Application 기본 패키지

- MySpringBootApplication.java: '@SpringBootApplication' 으로 App을 bootstrap 하는 메인 클래스

- controller : '@Restcontroller'로 주석이 달린 REST 컨트롤러 

- service : 비즈니스 로직이 있는 service class를 포함. '@service' 로 annotation . 

- repository : 데이터 액세스를 위한 repository interface를 포함. 일반적으로 'JpaRespository'를 확장하며 '@Repository'로 annotation

- model : 데이터베이스 테이블을 나태는 엔티티 클래스를 포함 '@Entity'로 annotation

- dto : 데이터 전송 객체

- config : '@Configuration' 으로 annotation 된 class

 

2. src/main/resources

 

- application.properties : spring boot application의 메인 설정 파일

- static : CSS, JavaScript 및 이미지와 같은 정적 리소스

- templates : server-side template 

- 기타 설정 파일들 

 

3. src/test

 

- java : test class

- resources : test resouces

 

4. .gitignore : Git이 무시해야할 파일 및 디렉토리 지정

 

5. mvnw mvnw.cmd : Unix, Windows용 Maven 설정 파일

 

6. pom.xml : 프로젝트 종속성 및 플러그인을 포함한 Maven 설정 파일

 

7. README.md : project 문서 


{project name} + Application.java 

Spring Boot로 만든 프로그램의 시작 파일. (실행 파일) 

해당 Class에는 @SpingBootApplication annotation이 적용되어 있어야한다.

해당 annotation을 통해 Spring Boot Application을 시작할 수 있다.

 

 

build.gradle 

 

build.gradle은 Gradle이 사용하는 환경 파일. Gradle은 Groovy를 기반으로한 Build Tool 이다.

Ant, Maven 과 같은 이전 세대의 단점을 보완하고 장점을 취합해서 만들었다. (업글 버전)

build.gradle 파일에는 project에 필요한 plugin, lib를 설치하기 위한 내용을 작성한다.

 


 

Groovy는 Gradle build script를 작성하는데 필요한 script 언어로 문법이 간결하고 가독성이 높다.

build 도구는 source code를 complie하고 lib를 다운받을 때 사용한다. 

project가 완성되면 하나의 jar 파일로 packaging 하여 deploy가 가능한데. 이 때도 build tool를 사용한다.