728x90
1. @RestController
정의
- @RestController는 Spring Framework에서 컨트롤러 클래스를 정의할 때 사용하는 어노테이션입니다.
- HTTP 요청(GET, POST 등)에 대한 응답을 처리하고, 그 결과를 JSON 형식으로 반환합니다.
특징
- @Controller + @ResponseBody의 결합된 역할을 합니다.
- @Controller: 요청 처리 메서드를 정의.
- @ResponseBody: 메서드의 반환값을 JSON 또는 XML과 같은 HTTP 응답 본문으로 변환.
사용 예제
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
브라우저에서 /hello로 요청하면, 응답으로 Hello, World!라는 텍스트가 JSON 형식으로 반환됩니다.
2. @JsonIgnore
정의
- @JsonIgnore는 Jackson 라이브러리에서 사용되며, 객체를 JSON으로 변환할 때 특정 필드(변수)를 제외하기 위해 사용됩니다.
- 민감한 데이터나 필요 없는 데이터를 클라이언트에 노출하지 않도록 할 때 활용합니다.
특징
- 객체를 직렬화(serialize)할 때 해당 필드는 무시됨.
- 비밀번호, 개인 정보와 같이 외부에 노출되면 안 되는 데이터를 숨길 때 주로 사용.
사용 예제
import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {
private String name;
@JsonIgnore
private String password;
// Getter, Setter
}
객체를 JSON으로 변환 시 password 필드는 JSON에 포함되지 않습니다.
User user = new User();
user.setName("Alice");
user.setPassword("1234");
String json = objectMapper.writeValueAsString(user);
System.out.println(json); // {"name":"Alice"}
3. @RequestBody
정의
- @RequestBody는 HTTP 요청의 본문(body)에 담긴 데이터를 Java 객체로 변환하기 위해 사용됩니다.
- 클라이언트가 전송한 JSON 데이터를 자바 객체로 매핑합니다.
특징
- 클라이언트가 보낸 데이터는 보통 JSON 형식으로 전송됩니다.
- Spring이 자동으로 Jackson 라이브러리를 사용하여 JSON 데이터를 Java 객체로 변환합니다.
사용 예제
java
코드 복사
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@PostMapping("/user")
public String createUser(@RequestBody User user) {
return "User created: " + user.getName();
}
}
class User {
private String name;
private String email;
// Getter, Setter
}
클라이언트가 다음과 같은 요청을 보낸다 했을 때.
{
"name": "Alice",
"email": "alice@example.com"
}
서버는 이 JSON 데이터를 User 객체로 변환하여 처리합니다
- user.getName() → "Alice"
- user.getEmail() → "alice@example.com"
요약 비교
@RestController | HTTP 요청을 처리하고 응답을 JSON 형식으로 반환. 컨트롤러 클래스에 사용. |
@JsonIgnore | JSON 직렬화 시 특정 필드를 제외. 데이터 보안 및 불필요한 데이터 제거에 사용. |
@RequestBody | 클라이언트 요청의 본문 데이터를 Java 객체로 변환. JSON 데이터를 객체로 매핑하는 데 사용. |
'IT개발 > Spring5' 카테고리의 다른 글
[Spring Boot] 개발 환경 설정부터 H2 데이터베이스 웹 연결 (0) | 2024.11.28 |
---|---|
[Spring5]로그인과 쿠키, 세션, 인터셉터 (0) | 2024.11.24 |
[Spring5] 커맨드 객체 검증(Validate(), @Valid, Bean Validation) (0) | 2024.11.24 |
[Spring & MVC] MVC의 이해 (0) | 2024.11.18 |
[Spring5]HTTP 상태 500 – UnsatisfiedDependencyException (메시지 서블릿 [dispatcher]을(를) 위한 Servlet.init() 호출이 예외를 발생) (0) | 2024.11.18 |