Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

밤빵's 개발일지

[WIL]20240707 Spring은 너무 팍팍해... 본문

개발Article

[WIL]20240707 Spring은 너무 팍팍해...

최밤빵 2024. 7. 7. 20:31

이번주는 과제한다고 피곤한것도 모르고 열심히 과제를 해본 주인데, 과제 제출기한도 지키지 못하고,

강의랑 병행해서 과제를 한다는게 나한테 너무 어려운 일이 되버렸다. 기한을 지키는 것도 약속인데 

그걸 잘 하지 못하는 것 같아서 슬프다 ㅠㅠ 

 

이번주는 공부방법에 대해 부캠 동료들에게 많은 조언을 듣고 받은 변화를 시도한 한 주 였다. 

생각보다 긴 강의 시간과 타이트한 일정으로 강의를 듣는것도 급했지만, 코드를 뜯어보며 공부를 하는것도 

중요해서 피곤하단 생각보다 이걸 해내고싶다는 의지가 더 크게 작용했다. 

추천해주신 방법에 따라 코드를 뜯어보며 한줄한줄 주석처리하며 공부를 해봤고, 나중에 정재님께 시연하며 설명하기로 했었는데... 시연하며 공부를 제대로 한게 아니라는걸 깨닫게됐다. 

//  @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