개발을 하면 요청 ✅파라미터를 받아서 ✅필요한 객체를 만들고 그 ✅객체에 값을 넣어줘야한다.
@RequestParam String username;
@RequestParam int age;
HelloData data = new HelloData();
data.setUsername(username);
data.setAge(age);
위와 같은 과정을 @ModelAttribute 가 자동화해준다.
@ModelAttribute 적용
import lombok.Data;
@Data
public class HelloData {
private String username;
private int age;
}
💡롬복의 @Data :
@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructure를 자동 적용
@ResponseBody
@RequestMapping("/model-attribute-v1")
public String modelAttributeV1(@ModelAttribute HelloData helloData){
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
log.info("helloData={}", helloData);
return "ok";
}
스프링MVC는 @ModelAttribute가 있으면 다음을 실행
HelloData 객체 생성
요청 파라미터 이름으로 HelloData 객체의 프로퍼티 찾음
해당 프로퍼티의 setter 호출해서 파라미터의 값을 입력(바인딩)
ex) 파라미터 이름이 username이면 setUsername() 메서드를 찾아 호출하면서 값을 입력한다.
💡프로퍼티
객체에 getUsername(), setUsername() 메서드가 있으면 이 객체를 username이라는 프로퍼티를 가지고 있다고 할 수 있다.
@ModelAttribute는 생략도 가능하다.
@ResponseBody
@RequestMapping("/model-attribute-v2")
public String modelAttributeV2(HelloData helloData){ //@ModelAttribute생략!
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
log.info("helloData={}", helloData);
return "ok";
}
'http://localhost:8080/model-attribute-v2?username=hello&age=20' 호출 시, 로그 출력
'💻공부 > Spring 🍃' 카테고리의 다른 글
@RequestParam (0) | 2023.05.12 |
---|---|
요청에 관하여 (0) | 2023.05.11 |
로깅로깅 (0) | 2023.05.11 |
서블릿(Servlet) (0) | 2023.02.19 |
URL 인코딩 (0) | 2023.02.11 |
댓글