Spring 3 계층
Spring 3계층 구조는 Spring MVC 패턴에서 가장 대중적으로 활용되는 역할 분리 방법이다.
아래와 같이 3-tier 방식으로 구성한다.

Presentation Layer
표현 계층, 화면 계층이라고도 한다. 이 계층은 웹에서 요청이 들어오는 것을 받아주는 계층이다.
ㅇㅇController라는 Class를 만들어서 사용한다.
@RestController
@RequestMapping("/api/users")
public class UserController{
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getUser(@PathVariable ("id") Long id){
return userService.findById(id); // 비즈니스 로직 호출
}
}
- 역할
- 사용자 인터페이스 처리
- 구성 요소
- 컨트롤러, 뷰
- 기능
- 사용자 요청 수신
- 비즈니스 로직 호출
- 결과를 사용자에게 표시
Buisness Layer
순수한 비즈니스 로직을 담고 있는 영역이다. 고객이 원하는 요구사항을 반영한다.
프레젠테이션 계층과 영속 계층의 중간다리 역할을 한다.
ㅇㅇService라는 이름으로 Class를 만들고, 실제로 작업이 일어나는 단계로 서버에서 사용자의 요구사항을 처리한다.
@Service
public class UserService{
@Autowired
private UserRepository userRepository;
public User findById(Long id){
return userRepository.findById(id)
.orElseThrow(() -> new UserNotFoundException("User not found"));
}
}
- 역할
- 애플리케이션의 비즈니스 로직 처리
- 구성 요소
- 서비스
- 기능
- 트랜잭션 관리
- 데이터 검증
- 도메인 로직 실행
Data Access Layer
Service에서 나온 결과값을 저장하거나 기존의 저장된 정보를 반환해주는 등의 일을 하는 정보를 관리해주는 역할을 한다.
DB와 가장 밀접한 연관이 있는 계층이며, DB와 상호작용을 하는 계층이다.
ㅇㅇRepository라는 이름으로 Class를 만들어 사용한다.
@Repository
public interface UserRepository extends JPARepository<User, Long>{
List<User> findByName(String name);
}
- 역할
- 데이터 처리 및 저장
- 구성 요소
- 레포지토리, 데이터베이스
- 기능
- CRUD 등 작업 수행
- 데이터에 대한 직접적인 접근
계층을 분리하는 이유?
이렇게 계층을 분리하는 이유는 관심사의 분리의 목적이 크다.
OOP 5대 설계 원칙(SOLID) 중 하나인 SRP(단일 책임 원칙)를 잘 적용한 사례라고 볼 수 있다.
이로써 각 영역은 독립적으로 설계되어 특정 부분이 변하더라도, 전자제품의 부품처럼 쉽게 교환할 수 있게 된다.
https://wook99.tistory.com/107
[Spring] 관심사의 분리란?
관심사의 분리 파헤치기 홀로 요리, 홀 서빙, 주문 받기 등 가게에서 필요한 모든 일을 다하는 주방장이 있다고 치자.여기에서 관심사는 요리, 홀 서빙, 주문 받기가 될 수 있다.누군가는 이를
wook99.tistory.com
'Spring & Spring Boot' 카테고리의 다른 글
| [Spring] JSP vs Thymeleaf (0) | 2024.11.11 |
|---|---|
| [Spring] DTO와 Entity의 분리. 왜? 어떻게? (2) | 2024.11.07 |
| [Spring] DTO vs Entity vs VO (1) | 2024.11.07 |
| [Spring] 관심사의 분리란? (1) | 2024.11.05 |
| [Spring] Spring MVC, MVC 패턴이란? (1) | 2024.11.05 |