Study/spring

[Java] Spring @RestController + @ModelAttribute 사용법 및 예제

 

스프링에서 @RestController와 @ModelAttribute 어노테이션을 같이 사용해서 값을 받는 방법에 대해 설명드리겠습니다.

 

@ModelAttribute 사용법

ModelAttribute는 데이터를 객체에 바인딩할 때 사용됩니다.

 

우선 ModalAttribute를 적용할 객체를 만들었습니다.

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class TestDto {

    private Integer number;
    private String name;
}

 

Lombok의 Getter와 Setter 어노테이션을 사용했습니다.

해당 객체를 컨트롤러에서 사용해보겠습니다.

@GetMapping("/test-dto")
public String getTestDto(@ModelAttribute TestDto dto) {
    return dto.toString();
}

ModelAttribute로 객체 값 받기
ModelAttribute로 객체 값 받기

number와 name 값을 받아서 TestDto로 변환되었습니다.

참고로 @ModelAttribute가 없어도 ModelAttribute로 적용됩니다.

 

 

 

 

주의사항

ModelAttribute를 적용할 객체에 꼭 필요한 설정이 있습니다.

 

Setter나 생성자가 없는 경우

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.AllArgsConstructor;

@Getter
//@Setter
@ToString
//@AllArgsConstructor
public class TestDto {

    private Integer number;
    private String name;
}

Setter 제거하면 값을 받을 수 없음
Setter 제거하면 값을 받을 수 없음

Setter나 생성자가 없으면 값을 받을 수 없습니다.

Setter 메소드나 생성자 중에 하나라도 있어야 값을 바인딩할 수 있습니다.

 

Lombok 어노테이션 중에 @Data를 사용하면 Setter와 생성자 모두 적용이 되지만, @Data 어노테이션은 사용을 권장하지는 않아서 필요한 어노테이션만 따로 쓰는 것이 좋습니다.