나도 스프링 부트를 사용해보자! - 웹 MVC 개발

min·2022년 2월 18일
0

출처
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한 강사님

<input type="text" id="name" name="name" placeholder="이름을 입력하세요">
public class MemberForm {
    private String name;

    public String getName() {
        return name;
    }

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

https://www.inflearn.com/questions/137265
우선 MemberForm을 controller단에 저장하셔서 놀랬다. 뭐지.. 위치가 잘 못 된걸까?🤔 라고 생각이 들어서 질문 게시판을 봤는데 역시나 비슷하게 생각 하신 분들이 있었다.
form, DTO 경우 단순히 계층간의 데이터를 전달할 때 사용함으로 역할은 같지만! form의 경우에는 웹 기술에 종속된 단어 임으로 조금더 명확하게 제약을 두어 컨트롤러 단에 두는 것이라고 하셨다.

여튼 또 궁금했던건

해당 form을 submit하면 @PostMapping으로 연결된 컨트롤러 단에서 연결이 되고 form에 입력한 정보들은 매개변수에 바인딩이 된다.
이때 name="name"의 값이 MemberForm의 name과 연결이 되서 바인딩이 된다. 이 부분이 매우 신기했다. 처음에 스프링 배울 때는 찾아 볼 생각도 못하고 오.. 신기하다.. 라고 생각하고 납득했었는데 스프링은 다 방법이 있었다..(당연함;)

역시 다들 비슷한 궁금증을 가지고 있었다..

파라미터 바인딩 부분이고 setter를 통해서 값이 넘어가는 것이다.
그래서 신기한게

// name -> names
public class MemberForm {
    private String names;

    public String getName() {
        return names;
    }

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

이렇게 해도 문제 없이 아주 잘 돌아 갈 것이다^-^

아니 근데 또 생각해보니까 이와 관련된 문제를 회사에서 겪은 적이 있었다. 그 때는 뭐야..? 라고 생각했는데 이게 다 setter 때문이었구만.

회사에서 겪은 문제도 이와 비슷하게 변수명이 미묘하게 변경된 것이었는데 갑자기 전달이 잘 되던 값이! 전달이 되지 않기 시작하는 것이었다.
그 때도 변수명만 변경을 하고 settergetter는 변경이 되지 않아서 오타를 고쳤던 기억이 있는데 그 때는 이걸 고쳐야 된다고..? 라고 하면서 일단 고쳤었는데 이런 이유였던 것으로 판정👍

thymeleaf 이건 안써봐서 신기한데 약간 JSTL같고 익숙하긴 하다...

강의만 들을게 아니고 커뮤니티도 많이 눌러봐야 되겠다! 역시.. 사람들은 똑똑해...✨

profile
발등에 불이 따뜻하다..

0개의 댓글