[Java] MVC 구조 생성

신재호·2022년 3월 11일
0

Java

목록 보기
2/4

목표

지난 글에서 프로젝트를 생성하고 기본적인 설정을 하였습니다.
이번 글에서는 MVC 패턴을 사용한 프로젝트 구조를 생성하고 API 서버를 구현해보겠습니다.

MVC 패턴이란?

개발이 주 목적이기 때문에 간단하게 MVC 패턴에 대해서 알아보겠습니다.
MVC 패턴은 다양한 디자인 패턴 중 모델(Model), 뷰(View), 컨트롤러(Controller)로 역할을 분리하여 구성하는 패턴입니다.
MVC 패턴을 사용하는 가장 큰 이유는 유지보수의 편리성 때문입니다.

  • Model: 데이터 가공을 담당합니다.
  • View : 사용자에게 보여지는 부분을 담당합니다.
  • Controller : 사용자의 요청과 요청의 결과를 모델과 뷰에 전달합니다.

MVC를 반영한 프로젝트 구조

MVC 를 반영한 소스

FirstService

public interface FirstService {
    public String helloWorld();
}

FirstServiceImpl

@Service
public class FirstServiceImpl implements FirstService {

    @Override
    public String helloWorld() {
        return "Hello World";
    }
}

FirstController

@RestController
@RequiredArgsConstructor
@RequestMapping("/first")
public class FirstController {
    private final FirstService firstService;

    @GetMapping("/0001")
    public ResponseEntity<String> getFirst(){
        String result = firstService.helloWorld();
        return new ResponseEntity<>(result, HttpStatus.OK);
    }

}
  • @RestController : Rest API 개발이 목표기 때문에 @Controller 어노테이션 대신 사용하였습니다.
    @RestController은 @Controller 와 @ResponseBody가 결합된 어노테이션입니다. 만약 @Controller을 사용한다면 컨트롤러 내 모든 메소드에 @ResponseBody를 붙여야합니다.

  • @RequiredArgsConstructor : lombok에서 지원하는 어노테이션으로 final이나 @NotNull이 붙은 필드에 자동으로 의존성을 주입해주는 어노테이션입니다.

  • @RequestMapping : API의 url을 매핑하기 위해 사용하였습니다.
    Contoller별로 url을 크게 분리하고, 메소드 별로 분리합니다.

  • @GetMapping : HTTP Get 요청에 대해서만 매핑합니다.

  • ResponseEntity : HttpEntity에서 status를 추가한 클래스입니다. HttpHeaders와 body, HttpStatus를 포함하고 있습니다.
    ResponseEntity를 사용하여 전체 응답을 통일시키고 세부적으로 관리하기 위하여 사용하였습니다.

브라우저에서 호출

  • 브라우저에서 위에서 만든 함수를 호출하면 다음과 같은 결과가 표시됩니다.

다음 글에서는 DB를 연동하여 DAO를 구현하고 페이지에 표시해보도록 하겠습니다.

전체 소스는 Gitlab 에서 확인할 수 있습니다.

profile
Data에 관심이 많은 웹개발자

0개의 댓글