밤빵's 개발일지
[WIL]20240707 Spring은 너무 팍팍해... 본문
이번주는 과제한다고 피곤한것도 모르고 열심히 과제를 해본 주인데, 과제 제출기한도 지키지 못하고,
강의랑 병행해서 과제를 한다는게 나한테 너무 어려운 일이 되버렸다. 기한을 지키는 것도 약속인데
그걸 잘 하지 못하는 것 같아서 슬프다 ㅠㅠ
이번주는 공부방법에 대해 부캠 동료들에게 많은 조언을 듣고 받은 변화를 시도한 한 주 였다.
생각보다 긴 강의 시간과 타이트한 일정으로 강의를 듣는것도 급했지만, 코드를 뜯어보며 공부를 하는것도
중요해서 피곤하단 생각보다 이걸 해내고싶다는 의지가 더 크게 작용했다.
추천해주신 방법에 따라 코드를 뜯어보며 한줄한줄 주석처리하며 공부를 해봤고, 나중에 정재님께 시연하며 설명하기로 했었는데... 시연하며 공부를 제대로 한게 아니라는걸 깨닫게됐다.
// @PutMapping,@PathVariable,@RequestBody : 다양한 유형의 메서드 매개변수를 처리하는데 사용
@PutMapping("/memos/{id}") // HTTP PUT요청을 메서드에 매핑하는데 사용. 일반적으로 RESTful API에서 리소스 업데이트하는데 사용.
// /memos/{id} : 메서드가 응답할 url패턴 지정. {id}는 이 메서드가 url에 대한 요청을 처리할거라는걸 나타내는 자리표시자고, id는 업데이트해야하는 메모를 지정하는데 사용.
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) { // long id는 url에서 추출한 실제 id값을 담는 파라미터.
// @PathVariable id 매개변수가 {id}로 나타나는 url에서 가져와야한다는걸 알려줌.
// @RequestBody : HTTP요청의 본문을 MemoRequestDto객체에 바인딩 하라고 지시.업데이트 매개변수가 일반적으로 요청. 본문에 JSON으로 전송되는 PUT요청에 필수적.
return memoService.updateMemo(id, requestDto); // memoService.updateMemo(id, requestDto) 이 메서드는 업데이트를 할 때 메모의 id와 requestDto에 캡슐화된 새 데이터 사용.
// url에 id로 표시된 특정 메모 없데이트를 목표로 하는 HTTP PUT요청을 처리.
// 요청 본문에 전송된 새 메모 데이터를 처리해서 지정된 메모를 업데이트
// 업데이트된 메모의 id를 반환해서 작업효과에 대해 클라이언트에게 응답 제공.
// long id 실제 숫자 id 보유
}
이 부분을 예시로 들면, 저렇게 주석처리를 잔뜩해놓고도 설명을 하며 어버버 했다.
코드를 설명할 수 있어야 이해가 된거라고 하셨는데 나는 이해를 하지 못한게 분명했다. 주석을 보며 설명을 하면서도 속으로는 이거 맞나? 틀리면 어떡하지란 생각이 더 컸다. 말로써 설명해보는걸 해보지 않아서 상대방을 이해시킬 수있는 설명을 할 수 없었고.가장 큰 이유는 내가 이해하지 못해서 내 설명에 확신이 없기 때문이였다. 하나하나를 설명하기보다 큼지막한 한줄을 설명하려고 하니 내가 적은 주석임에도 낯선느낌이 들었다. ( 사실 매개변수나 이런거 설명할 자신 없어서 이런 꼼수를 부린건 아닐까 싶다)
나름 나눠서 정리를 해두었지만, 질문에 대답할 수 있는건 많이 없었다. 100점중 20점 정도를 이해한 정도?
시연이 끝나고 들은 방법은 사실 간단하다. 그냥 하나하나 설명하면 되는건데, 깊게파고든것도 있었고,
이 공부법에 대한 이해가 부족했다. 맘대로 (하고싶은대로) 공부했단 얘기다...ㅠㅠ
정재님도 처음에 그랬다고 하시면서 알려주신 방법은,
@PutMapping("/memos/{id}")
@putMapping 은 HTTP put요청을 이 메서드에 매핑하고, `"/memos/{id}"`는 URL경로, {id}는 경로 변수입니다.
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto)
Long타입의 값을 반환할거고, updateMemo 메서드로 메모를 업데이트 합니다.
@PathVariable Long id 은 경로 변수인 id를 메서드의 id 매개변수로 받을거고,
이 변수는 URL에서 추출된 메모의 id입니다.
@RequestBody MemoRequestDto requestDto 요청 본문을 MemoRequestDto 객체로 변환해서 requestDto 매개변수에 저장하고, 클라이언트가 보낸 데이터는 이 객체에 포함됩니다.
return memoService.updateMemo(id, requestDto);
memoService 객체의 updateMemo메서드를 호출하고,
id와 requestDto를 사용해서 데이터베이스의 메모를 찾고 해당메모의 데이터를 요청해서 본문의 새로운 데이터로 변경,
메서드의 반환값은 updateMemo가 결론적으로 Long타입으로 반환됩니다 .
정재님의 설명을 듣는데 너무 멋졌다. 같은 로직 인데도 난 저렇게 설명못하는데... 술술 설명해주시는거 보고 정말 공부 열심히 하셨구나 나도 분발해야 겠다는 생각이 들어서 진짜 정재님 조언 잘 듣고 따라야겠다 마음 먹었다. 사실 공부해서 이해했다! 하면서도 정재님 설명에 새로운거 듣는 기분으로 공부를 했으니 엉뚱하게 공부한게 맞는것같다 ㅠ
이런식으로 하나하나 설명하면 상대방도 이해하기 편하고 나도 잘 이해할 수 있는 거였는데 ,
시연해주시니 다시 이해하게되었다. 예전 기술매니저님 조언 중에서 많은 걸 생각하지 말고 딱 보이는것만
설명하라는 말을 들은적이있었는데, 바꾸지 못하는거 보면 더 혼나야 되나 싶다. 코드를 보면서 많은 생각을 담는건 좋지 않다고 하셨는데.. 지금은 강의를 병행하며 쉴 떄마다 코드를 들여다본다. 이렇게 배워가고 느는거잖아 ?!
이런 방법으로 공부를하고나니 확실히 강의들으면서 이해하는게 조금씩은 다른게 신기했다. 완벽히는 이해할 수 없어도, 예전엔 20분짜리 강의를 한시간도 들었었는데 지금은 그 정도보다는 많은 시간이 단축되었기 때문에, 강의를 듣기가 수월했다. 정말 이번 한 주는 공부방법이 잘못 되었다는 말을 아니 사실 전부터 들었는데 쉽게 바꾸지 못하고 있었다.
바꾼다고 바꿔도 어느새 예전 방법으로 돌아가고 있었기 때문에 Spring 주차를 시작하고 어려움이 더 커졌었는데 ,늦었지만 이 방법으로 조금은 달라질 수 있어서 이번 한주는 굉장히 알찼다. 부캠의 좋은점을 나날이 경험하는중이라 흔들렸던 멘탈도 사실 계속 흔들리곤 있지만, 안정되는 시간이 더 많아졌다.
과제 제출기한은 지키지 못하고 있어도, 완성을 목표로 열심히 달리는 중이기 때문에 나름 얻어가는게 많아서 만족스럽다. 다음주는 또 얼마나 많은 배움과 깨달음을 얻게될지 두려움반 기대반 이지만 이번 주보다는 더 성장할거야😆! 화이띵!
'개발Article' 카테고리의 다른 글
[TIL]20240709 DispatcherServlet..? (0) | 2024.07.11 |
---|---|
[TIL]20240708 MVC패턴 (0) | 2024.07.09 |
[TIL]20240706 드디어 람다를 이해할 수 있나..?! (0) | 2024.07.07 |
[TIL]20240705 @Autowired (0) | 2024.07.06 |
[TIL]20240704 @어노테이션 (0) | 2024.07.04 |