컨트롤러 어노테이션

cook_pasta·2024년 9월 14일

SpringBoot

목록 보기
5/5

RESTful API 컨트롤러

@RestController 어노테이션

이 클래스가 REST API의 컨트롤러임을 나타냅니다. JSON 또는 XML과 같은 데이터를 반환하는 메서드를 포함합니다.


JSON과 XML은 데이터 교환 형식으로 사용되는 두 가지 주요 형식입니다. 둘 다 데이터 구조를 표현하는 데 사용되지만, 그 형식과 사용 방식에 차이가 있습니다.

JSON (JavaScript Object Notation)

특징:

  • 형식: JSON은 자바스크립트 객체 표기법에서 파생된 데이터 형식입니다. 데이터는 키-값 쌍으로 구성됩니다.
  • 문법: JSON 문법은 자바스크립트 객체 문법과 유사하며, 간단하고 가독성이 좋습니다.
  • 확장성: JSON은 객체, 배열, 문자열, 숫자, 불리언, null 값을 지원합니다.
  • 파일 확장자: .json
  • 사용: JSON은 웹 API에서 데이터 교환, 설정 파일, 데이터 저장 등 다양한 용도로 사용됩니다.

XML (eXtensible Markup Language)

특징:

  • 형식: XML은 마크업 언어로, 데이터를 태그로 감싸서 구조를 정의합니다. 데이터는 계층 구조로 표현됩니다.
  • 문법: XML 문법은 태그 기반이며, 태그는 열림 태그와 닫힘 태그로 구성됩니다. 데이터의 구조를 명확하게 표현할 수 있습니다.
  • 확장성: XML은 사용자 정의 태그를 지원하며, 다양한 데이터 구조를 표현할 수 있습니다.
  • 파일 확장자: .xml
  • 사용: XML은 데이터 저장, 데이터 교환, 문서 형식 정의 등 다양한 용도로 사용됩니다.

<주요 차이점>

  • 형식: JSON은 데이터 구조를 간결하게 표현하며, XML은 태그 기반으로 더 자세한 구조를 제공합니다.
  • 가독성: JSON은 더 간결하고 읽기 쉬운 형식으로, 특히 개발자들에게 인기가 많습니다. XML은 태그가 많아 상대적으로 더 복잡해 보일 수 있습니다.
  • 데이터 크기: JSON은 XML보다 데이터 크기가 작고, 파싱 속도가 빠릅니다.
  • 문서 정의: XML은 문서의 구조를 정의할 수 있는 DTD나 XML Schema와 같은 정의 파일을 사용할 수 있습니다.

@Autowired 어노테이션

Spring Framework에서 의존성 주입(Dependency Injection)을 위한 어노테이션입니다. 의존성 주입은 객체 간의 의존성을 외부에서 주입해주어, 객체 간의 결합도를 낮추고 코드의 유연성과 테스트 가능성을 높이는 데 사용됩니다.

  1. 의존성 주입: @Autowired는 Spring 컨테이너에서 관리하는 빈(Bean)을 자동으로 주입해 줍니다. 이 어노테이션이 붙은 필드, 생성자, 또는 메서드에 대해 Spring은 해당 타입에 맞는 빈을 찾아 주입합니다.

  2. 자동 주입: @Autowired는 타입 기반으로 빈을 주입합니다. 즉, Spring 컨테이너에서 해당 타입의 빈을 찾아 자동으로 주입합니다. 명시적으로 빈을 설정하지 않아도, Spring이 자동으로 빈을 관리하고 주입합니다.

  • 생성자에 @Autowired를 붙이면, Spring은 해당 생성자를 사용하여 빈을 주입합니다. 생성자 주입은 의존성이 명확히 드러나며, 불변(Immutable) 객체를 만들 수 있어 테스트와 유지보수에 유리합니다. Spring 4.3 이후부터는 생성자가 하나일 경우 @Autowired를 생략할 수 있습니다.

@PathVariable 어노테이션

Spring Framework에서 URL 경로의 변수를 메서드 파라미터로 전달받기 위해 사용되는 어노테이션입니다. RESTful 웹 서비스에서 URL 경로의 일부를 메서드의 인자로 바인딩할 때 유용합니다.
@PathVariable은 URL 경로의 특정 부분을 메서드 파라미터에 매핑하는 데 사용됩니다. 주로 RESTful 웹 서비스에서 URI의 경로 변수 값을 메서드의 인자로 받을 때 사용합니다.

@RequestBody 어노테이션

Spring Framework에서 HTTP 요청 본문(body)의 데이터를 메서드 파라미터로 변환하여 전달받기 위해 사용되는 어노테이션입니다. 주로 POST, PUT 요청의 경우 클라이언트가 서버로 보내는 데이터를 처리할 때 사용됩니다.

@RequestBody는 HTTP 요청의 본문에서 JSON, XML, Form 데이터 등을 Java 객체로 변환하여 메서드 파라미터에 주입합니다. 주로 @RestController에서 JSON 데이터를 Java 객체로 변환할 때 사용됩니다.
@RequestBody는 HTTP 요청 본문에서 데이터를 추출하여 Java 객체로 변환해 메서드 파라미터로 전달합니다.
주로 POST 및 PUT 요청에서 클라이언트가 서버로 데이터를 전송할 때 사용됩니다.
JSON, XML 등의 데이터 형식을 Java 객체로 변환하고, 클라이언트로부터 받은 데이터를 검증하거나 처리하는 데 유용합니다.

@NoArgsConstructor & @AllArgsConstructor 어노테이션

롬복(Lombok) 라이브러리에서 제공하는 어노테이션으로, 기본 생성자(default constructor)를 자동으로 생성해줍니다. 이 어노테이션을 사용하면 클래스에 명시적으로 생성자를 작성하지 않아도 인스턴스를 생성할 수 있습니다

참고

0개의 댓글