본문 바로가기

TIL

[TIL 2022-2-2] 로그인 페이지 뷰 구현 + 생성자에 따른 @ModelAttribute의 동작 방법

로그인 페이지 뷰 구현

부트스트랩과 Thymeleaf를 활용해서 로그인, 회원가입, 계정찾기 뷰를 미리 구현했다. 아직 Thymeleaf 에 모델을 적용하는 코든는 빈 부분들이 있지만 개발하면서 수정해 나갈 예정이다.

 

처음엔 진짜 현업에서처럼 동작하는 로그인 시스템을 만드는게 막막했는데, 아직 정말 많이 부족하지만 지난 20일동안 공부하면서 어떤 것들을 공부해야하고 알아야가야하는지 조금은 알게된 것 같다. 지금은 초라한 프로젝트지만 얼른 공부해나가면서 하나둘씩 발전시켜나가고 싶다!!!

 

 

생성자에 따른 @ModelAttribute의 동작 방법

Lombok의 @NoArgsContructor 와 @AllArgsConstructor 를 클래스에 명시하고 컴파일하면 각각 매개변수가 없는 생성자와 모든 멤버변수를 매개변수로 받아 초기화하는 생성자를 만들어준다. 

 

HttpServletRequest를 통해서 들어온 요청 파라미터들이 이에 대응되는 핸들러의 매개변수 객체에 바인딩되어 만들어지는 객체를 커맨드 객체라고한다.

 

이 커맨드 객체는 @NoArgsContructor 와 @AllArgsConstructor 에 따라 아래와 같은 방법으로 커맨드 객체를 만든다.

1. @NoArgsContructor 와 @AllArgsConstructor가 둘다 있을 경우

 - 매개변수가 없는 생성자를 호출하고 세터를 호출한다.

2. @AllArgsConstructor만 있을 경우

 - @AllArgsConstructor로 만들어진 생성자를 호출하고 그 다음에 세터를 다시 호출한다.

 

2번과 같은경우엔 생성자를 통해 한번 초기화되기 때문에 세터가 없어도 무방하지만, 1번의 경우에는 매개변수가없는 생성자만 호출하고 세터를 호출하기 때문에 꼭 세터가 필요한 것이다. 이와 같은 경우에는 @NoArgsContructor를 제거하거나 @Setter를 추가해야한다. 객체의 성격에 맞게 구현하면 될 것 같다.

 

출처: https://steady-coding.tistory.com/489

 

[Spring] @ModelAttribute 사용할 때 주의할 점

안녕하세요? 제이온입니다. 오늘은 @ModelAttribute에 설명보다는 개발하면서 느낀 주의 사항에 대해 설명드리려고 합니다. @ModelAttribute 바인딩이 되지 않는 이슈 우테코 다라쓰 팀 프로젝트 도중 @Re

steady-coding.tistory.com

(스프링이나 자바를 공부하면서 검색하다보면 꼭 하루이틀에 한번씩 이분이 쓰신 글을 만나는데 정말 이해 쏙쏙되게 잘쓰시는 것 같다. 이분처럼 블로그를 앞으로 잘 쓰고싶다!!)

 

 

 

기타

이전에 내가 쓴글을 봤는데 어떤거는 내가 이런걸 언제썼지 할정도로 새까맣게 기억 안나는 글들이 있었다.. 이제 곧 면접도 보고 할테니까 하루에 몇개씩 복습해봐야겠다!!