5차 Spring MVC로 RESTful API 서비스 구현

리얼브로·2023년 2월 27일
0

1.Spring MVC에서 RESTful 지원

  • 스프링 MVC에서 RESTful을 지원하는 방법을 알아봅니다.
  • Spring-Web MVC에서의 RESTful 지원
  • @Controller -> @Component -> 스프링 컨테이너
    스프링 컨테이너 위에 로딩 되는 객체를 컴포넌트라 부르며
    자동적으로 스프링 컨테이너에서 관리를 한다.
    (@Component 어플리케이션 시작시 로딩되어 스프링 컨테이너에 의해 관리되어 지는 컴포넌트를 의미한다.)
  • @Controller 와
    @RequestMapping(value="url", method=POST/GET/DELETE/PUT) @ResponseBody 사용
	  @Controller   
      public class IndexController{
        @RequestMapping(value="/", method=RequestMethod.GET)    
        @ResponseBody
        public String index(){
          return "Hello, Boot"
        }
      }
  • @RestController와 @X-Mapping 사용 (스프링 4.3 이상...)
  • @RestController = @Controller + @ResponseBody 개념이며 주로 JSON Object 타입으로 결과값을 리턴한다.
  • @GetMapping(@X-Mapping) = @RequestMapping(value="/", method=RequestMethod.GET)
	@RestController
	public class IndexController{
		@GetMapping("/")
        public String index(){
        	return "Hello, Boot";
       }
	}

2.Layered Architecture

  • 계층화 아키텍처를 의미하는 Layered Architecture를
    스프링에서 어떻게 구현하는지 확인합니다.

  • Layered Architecture는 인접한 레이어 간의 통신만 허용하고
    반드시 레이어를 거쳐서 통신하는 구조를 가진다.
    대표적 사례로 OSI7 레이어가 있다.

  • 효율적인 개발과 유지보수를 위해 계층화하여 개발

  • 대부분의 중/대규모 어플리케이션에서 적용

  • 각 레이어는 독립된 R&R을 가짐

  • Layered Architecture 특징
    (Presentation Layer -> Business Logic Layer -> Data Access Layer)

    • 프레젠테이션 영역 (Presentation Layer) @Controller 영역
      • 사용자와 상호작용을 담당
      • 사용자의 요청을 분석/응답
    • 비즈니스 영역 (Business Logic Layer) @Service 영역
      • 기능을 수행
      • 트랜잭션 수행
    • 데이터 영역 (Data Access Layer) DAO 영역
      • 데이터의 저장과 조회를 담당
      • 주로 데이터베이스와 연동하여 작업
  • Layered Architecture 전자정부프레임워크 사례

    • Controller, Service, DAO 영역을 레이어링 시켜 놨으며 각각의 레이어들 끼리는 ValueObject(VO)를 통해 데이터를 주고 받는다.

    • 컴포넌트 자동등록

      • 컴포넌트는 스프링 컨테이너 위에 로딩되는 객체이며 사용자가 라이프 사이클을 직접 관리 할 수 없고
        스프링 컨테이너가 객체 생성, 사용을 관리한다.
      • 어노테이션(Annotation) 사용
        • @Component 와 하위 어노테이션 사용
        • @Autowired
          • Component 간의 의존관계는 Autowired라는 Annotation으로 적용
          • @Autowired 어노테이션은 DI 기능으로 자동으로 의존관계를 맺어준다.

0개의 댓글