이전 글에서 @RequestBody 바인딩 처리를 알아보았고 이번에는 @ModelAttribute 처리에 대해 알아보자 스프링 버전에 따라 라인 수가 달라질 수 있으니 사진 설명에 클래스#메서드 형태로 남겨놨다 어떤 메서드를 호출하는지에 주의해 흐름을 따라가보자, 테스트할 객체와 컨트롤러는 아래 더보기를 참고하면 된다 더보기 @XmlAccessorType(XmlAccessType.PROPERTY) @XmlRootElement(name = "data") @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @ToString public class TestRequest { @XmlElement(name = "xml_nam..
레거시 시스템을 살펴보면 도메인에도 @Data, @Setter가 달려있는 모습을 볼 수 있다 불변의 중요성이 커지면서 & 무분별한 setter로 인해 변경점 파악이 어려워 @Setter는 안티 패턴과 같이 여겨지고 있다 @Setter와 같은 역할을 하더라도 더 의미 있는 changeXX() 등의 네이밍이 권장되고 있다 그렇다면 레거시 시스템에서는 @Setter를 왜 썼을까?, 개인적인 생각에 다음과 같은 이유지 않았을까 싶다 1. setter와 이름만 다르지 역할은 같은 수 많은 메서드를 만들기 귀찮음 2. @RequestBody, @ModelAttribute 바인딩을 가장 쉽게 할 수 있는 방법이므로 언젠가 코드리뷰에서 DTO에서 매핑이 안 되던 문제가 나왔던 적이 있다 입사한 지 얼마 안 된 신입 시..