본문 바로가기
웹 프레임워크 (Web Framework)/Spring Boot

스프링 부트의 구조

by Tarake 2024. 9. 9.

스프링 부트의 계층


스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조입니다. 각 계층은 역활과 책임이 있는 구성요소를 의미합니다. 그리고 각 계층은 계층 간의 통신은 가능하지만 직접 영향을 미치지 않습니다.

 

프레젠테이션 계층

HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전송하는 역활입니다. 즉 컨트롤러가 프레젠테이션 계층의 역활을 합니다. 

 

비즈니스 계층

모든 비즈니스 로직을 처리합니다. 즉 서비스를 만들기 위한 로직을 말합니다. 예를 들면 물건을 조회할 때 물건의 개수, 가격 등의 데이터를 처리하기 위한 로직 등을 처리합니다. 즉 서비스가 비즈니스 계층의 역활을 합니다.

 

퍼시스턴스 계층

데이터베이스 관련 로직을 처리합니다. 데이터베이스에 접근하는 DAO(데이터베이스 계층과 상호작용하기 위한 객체) 객체를 사용할 수 있습니다.

 

스프링 부트 디렉터리

 

main

실제 동작하는 코드를 작성하는 디렉터리입니다. 

 

test

main에 적요하기 전에 테스트 목적의 디렉터리입니다.

 

build.gradle

의존성이나 플러그인 설정 등 빌드에 필요한 설정을 위한 파일입니다.

 

 

resources 디렉터리에는 static, templates, application.properties 가 존재합니다. 

 

static

static은 css, js, 이미지와 같이 변하지 않는 파일을 저장하는 디렉터리입니다.

 

templates

templates는 변하는 데이터를 저장하는 곳입니다. 즉 타임리프와 같은 도구로 데이터 + HTML 을 합쳐 프로그램에 제공하는 파일을 저장하는 디렉터리입니다.

 

application.properties

스프링 부트 애플리케이션의 설정을 관리하는 주요 파일입니다.

# Spring Boot 기본 설정

# 서버 포트 설정 (기본값: 8080)
server.port=8080

# Thymeleaf 설정 (기본 설정으로 대부분 자동으로 처리됨)
spring.thymeleaf.cache=false # 개발 중에는 캐시를 비활성화하여 변경 사항을 즉시 반영할 수 있습니다.

# 데이터베이스 연결 설정
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_database_username
spring.datasource.password=your_database_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JDBC 설정
spring.jpa.hibernate.ddl-auto=update # 데이터베이스 테이블 생성 및 업데이트 자동화 (수정 시 주의)
spring.jpa.show-sql=true # SQL 쿼리를 콘솔에 출력

# Lombok 설정 (특별한 설정이 필요하지 않음; Lombok이 잘 작동하면 추가 설정은 필요 없음)
# Lombok은 컴파일 시 애노테이션 프로세서를 사용하므로, 별도의 설정이 필요 없습니다.

# 로깅 설정 (기본 로그 레벨 설정)
logging.level.root=INFO # 로깅 레벨 설정 (DEBUG, INFO, WARN, ERROR)
logging.file.name=application.log # 로그 파일 이름 (필요 시 설정)

# Spring Web 설정 (기본 설정으로 대부분 자동으로 처리됨)
# 기본적으로 /index, /home 등의 요청을 처리할 수 있는 컨트롤러 설정 필요

# 예외 처리 페이지 설정 (옵션)
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

설정은 다음과 같이 합니다.