Spring

Spring - MVC 패턴

Big Iron 2023. 3. 8. 23:22

Spring을 공부하면 꼭 알아야 하는 것이 MVC이다.

여기서 말하는 MVC란

  • M (Model) - 데이터와 비즈니스 로직을 담당하는 부분. 데이터베이스와 연동하여 데이터를 가져오고 저장. → Service와 같다.
  • V (View) - 사용자에게 보여지는 UI(User Interface)를 담당하는 부분. HTML, CSS, JavaScript 등을 이용하여 화면 구성.
  • C (Controller) - 모델과 뷰를 연결해주는 부분으로, 클라이언트의 요청을 받아 해당 요청에 맞는 로직을 처리하고, 결과를 뷰에 전달.

아래에서 게시판의 글 생성을 예로 코드를 만들어 보겠다.

@RestController // json 형태로 객체 데이터 반환?, IOC 컨테이너에 등록. 
@RequiredArgsConstructor // final이나 @NotNull인 필드 값만 파라미터로 받는 생성자 만듦, 추적 
public class MemoController {
    private final MemoService memoService; 

    @PostMapping("/api/memos") // 글 생성 
    public Memo createMemo(@RequestBody MemoRequestDto requestDto) { // dto를 문자열로 받아오겠다 ? 
        return memoService.createMemo(requestDto); 
    } 
}
  1. Post 메소드이며 url은 /api/memos 이다.
  2. 만들어둔 Memo Entity 형식으로 글을 생성하며 RequestDto로 데이터를 감싸 Service로 전달한다.
    • Entity란 데이터를 어떤 형식,모양으로 DB에서 관리할지 정해주는 클래스이다.
    @Service // 비즈니스 로직 담당, IOC 컨테이너에 등록.
    @RequiredArgsConstructor // final이나 @NotNull인 필드 값만 파라미터로 받는 생성자 만듦, 추적
    public class MemoService {

        private final MemoRepository memoRepository;

        @Transactional // 글 생성
        public Memo createMemo(MemoRequestDto requestDto/*Controller에서 보낸 dto를 받는다*/) {
            Memo memo = new Memo(requestDto); // 새로운 Memo 객체를 만들어 dto 값을 넣어준다. 
            memoRepository.save(memo); // 새롭게 만든 memo 객체를 JPA를 사용해 저장한다.
            return memo;
        }
    }
  1. 새로운 memo 객체를 만들어 받아온 dto 값을 넣어준다.
  2. 1번에서 만들어둔 memo 객체를 JPA를 사용해 저장한다.

위의 코드를 보면 controller와 service의 역할은 분명하다. controller는 외부에서 요청한 데이터를 적절한 service와 연결시켰고 해당 service에서 로직을 처리했다.

이처럼 각각의 기능을 분담하여 처리하지 않았다면 절차 지향으로 모든 코드가 한곳에 모여 유지, 보수가 어려웠을 것이다.

오늘은 간단하게 MVC 패턴에대해 알아보았고 다음에는 Response를 추가해 조금 더 구체적인 상황을 알아봐야겠다.

'Spring' 카테고리의 다른 글

[SpringBoot] flyway와 DB migration 해야하는 이유  (0) 2023.09.23
[Spring] EC2에 Prometheus & Grafana 적용  (0) 2023.07.18
Http, Https 프로토콜  (0) 2023.07.11
Spring - 입문  (0) 2023.02.24