Back End/Spring Boot

Spring Boot 구조

DevHam94 2024. 6. 24. 10:43

웹 브라우저

<->

스프링 부트 애플리케이션 {

 Controller 클래스: 외부 요청을 분기하여 적절한 서비스 클래스와 연결하여 작업을 처리하고 반환,

 Service 클래스: 데이터베이스 조작이나 비즈니스 로직을 메서드 기반으로 처리,

 Member클래스 - MemberRepository: Memeber 클래스로 구현한 클래스를 Repository 인터페이스가 실제 테이블과 매핑(JPA, Hibernate),

 실질적인 데이터는 DB에 저장

}

<- 

JPA: 데이터베이스 연결 및 구현

lombok: 클래스 메서드 구현 도우미

h2: 인메모리 데이터베이스 

 

 

Spring Boot의 세가지 계층

프레젠테이션 계층 - Controller : 외부에서 HTTP 요청을 받아 비즈니스 계층으로 전송

비즈니스 계층 - Service : 비즈니스 로직을 처리하는 계층으로 웹 사이트에서 작동하는 모든 작업들을 처리한다. 

퍼시스턴스 계층 - Repository : DB관련 로직을 처리. DAO 객체(DB계층과 상호작용하는 객체)를 사용할 수 있다.

 

계층은 개념이고 실제 구현은 Controller, Service, Repository로 한다. 

 

 

build.gradle에서 사용되는 dependency 키워드

implementation : 프로젝트 코드가 컴파일 시점과 런타임에 모두 해당 라이브러리를 필요로 할 때 사용한다

testImplementation : 프로젝트의 테스트 코드를 컴파일하고 실행할 때만 필요한 의존성을 설정, 테스트 코드에서만 사용, 
메인 애플리케이션 코드에서는 사용하지 않는다

runtimeOnly : 런타임에만 필요한 의존성을 지정한다. 컴파일 시에는 필요하지 않지만, 애플리케이션을 실행할 때
필요한 라이브러리 설정이다

compileOnly : 컴파일 시에만 필요로하며, 런타임에는 포함되지 않아야 하는 의존성 지정

annotationProcessor : 컴파일 시에 애노테이션을 처리할 때 사용하는 도구의 의존성 지정이다