[Spring] @RequestBody가 빈 생성자가 필요한 이유

    [Spring] @RequestBody가 빈 생성자가 필요한 이유 알아보기

    @RequestBody로 매핑할 객체는 HTTP 요청의 Body 데이터가 자바 객체로 변환될 때, 해당 객체의 빈 생성자가 호출되어 객체를 생성해야 합니다.

    이는 Spring에서 Jackson 라이브러리를 이용하여 JSON 데이터를 객체로 변환하는 과정에서 발생하는데, Jackson 라이브러리는 객체를 생성할 때 기본 생성자(default constructor)를 호출하기 때문입니다. 그리고 Spring에서는 @RequestBody를 이용하여 요청의 Body를 자바 객체로 매핑할 때 Jackson 라이브러리를 사용합니다. 따라서 @RequestBody로 매핑할 객체는 빈 생성자가 있어야 Jackson 라이브러리가 객체를 생성할 수 있습니다.

    예시 User 클래스

    public class User {
        private String name;
        private int age;
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
        // getter, setter, toString 등의 메소드 생략
    }

    위 User 클래스는 생성자를 하나 가지고 있고, 인자를 받아서 객체를 생성합니다. 이 경우, @RequestBody로 매핑할 수 없는 객체가 됩니다. 그 이유는 빈 생성자가 없기 때문입니다.

    댓글

    Designed by JB FACTORY