[spring] @PostMapping - 파라미터에 들어갈 객체 자동 생성

woply·2022년 1월 9일
1

TIL(Today I Learn)

목록 보기
3/31

📖 ✏️

  1. TIL 시리즈에 작성된 글은 '매일 매일 학습한 지식 조각을 메모해 놓은 포스팅'입니다. 공유가 아닌 개인적인 학습 내용 기록을 목적으로 작성되었음을 알려드립니다.
  2. 그 외 시리즈에 작성된 공유 목적의 포스팅은 시간이 날 때마다 별도로 작성하고 있습니다. 주로, TIL 시리즈에 작성된 내용에서 특정 주제를 선정하고, 더 깊이 공부한 후 정리하여 작성합니다.

@PostMapping - 파라미터에 들어갈 객체 자동 생성

아래와 같이 HTML 파일에서 summit을 하게 되면, input 태그의 name 속성이 'name'인 데이터가 post 방식으로 action 속성에 지정된 경로로 전달된다.

<div class="container">
    <form action="/members/new" method="post">
        <div class="form-group">
            <label for="name">이름</label>
            <input type="text" id="name" name="name" placeholder="이름을 입력하세요"> </div>
        <button type="submit">등록</button> </form>
</div> <!-- /container -->

아래는 action 속성에 해당하는 경로를 Mapping하고 있는 Controller 메서드 create()다.

@PostMapping("/members/new")
public String create(MemberForm form) {
    Member member = new Member();
    member.setName(form.getName());

    memberService.join(member);

    return "redirect:/"; // home 화면으로 redirect
}

이 메서드를 파라미터로 MemberForm의 객체를 필요로 한다. 스프링은 MemberForm의 객체를 자동으로 생성하여 파라미터 전달 객체로 사용한다.

public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

MemberFrom 객체는 필드 변수에 private 접근제한자를 갖고 있는 name이 있다. private이기 때문에 setter를 통해 name 값을 변경할 수 있다. 스프링은 post 방식으로 ControllerMapping될 때, 객체 생성부터 setter를 이용하여 MemberForm 객체의 name 변수의 초기화까지 자동으로 진행한다.

이후 로직을 통해 MemberForm 객체의 name 값이 member 객체에 setName되고, memberService의 join()까지 실행된다.

profile
7년간 마케터로 일했고, 현재는 헤렌에서 백엔드 개발자로 일하고 있습니다. 고객 가치를 설계하는 개발자를 지향하며, 개발, 독서, 글쓰기를 좋아합니다. 업이 심오한 놀이이길 바라는 덕업일치 주의자입니다.

0개의 댓글