[23기_김태익] spring tutorial 미션 제출합니다.#9
[23기_김태익] spring tutorial 미션 제출합니다.#9taeik21 wants to merge 9 commits intoCEOS-Developers:taeik21from
Conversation
boogiewooki02
left a comment
There was a problem hiding this comment.
전체적으로 과제 수행 완성도가 굉장히 높으시네요! 고생 많으셨습니다. 👍👍
특히 OOP, Profile 설정 등 과제 가이드라인에 없는 내용도 잘 정리해주셔서 덕분에 1주차 미션 내용에 대해 더욱 깊이 있게 학습하게 되었습니다.
다만, 실제 협업이나 실무 환경을 가정했을 때 더 완벽한 결과물을 위해 보안 설정(비밀번호 환경변수화)에 대해 작은 제안을 드렸습니다. 이 부분만 살짝 보완해 주시면 더욱 완벽한 코드가 될 것 같아요!
src/main/resources/application.yaml
Outdated
| datasource: | ||
| url: jdbc:mysql://localhost:3306/test_db?allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=UTF-8 | ||
| username: root | ||
| password: root |
There was a problem hiding this comment.
[P1] DB 비밀번호 하드코딩 노출위험
현재 비밀번호가 직접 노출되어 있는 것 같습니다. 로컬에서 진행하는 과제이다보니 적어두신 것 같지만, 환경변수를 사용해서 비밀번호를 숨기는 방식으로 개선해봐도 좋을 것 같아요!
| } | ||
| ``` | ||
|
|
||
| - **Profile** |
There was a problem hiding this comment.
로컬과 운영 환경을 분리해서 레포지토리를 선택적으로 주입하는 설정은 Spring의 DI와 다형성을 가장 잘 보여주는 좋은 예시라고 생각해요. application.yaml 설정까지 꼼꼼하게 작성해 주셔서, 프로파일에 따라 빈이 어떻게 교체되는지 흐름이 한눈에 들어와서 좋아요!
| ... | ||
| } | ||
| } | ||
| ``` |
There was a problem hiding this comment.
예전에 처음 스프링을 배울 때 DI가 왜 필요한지 아리송했던 적이 있었는데 이렇게 DI를 사용하지 않은 경우와 사용한 경우를 예시코드를 통해 직접 비교하며 그 장점을 확인할 수 있어서 왜 DI를 사용하는지 더 직관적으로 이해할 수 있었습니다. 또 DI를 사용하는 이유를 단순히 객체의 생태주기를 스프링이 관리한다는 점과 목데이터를 사용할 수 있다는 점에 대해서만 알고 있었는데 순환참조 방지와 불변객체 생성까지 할 수 있다는 스프링 DI의 장점에 대해서 알게 되었습니다.
| - **예외 처리** | ||
| - 실행 중 에러가 있었다면 `HandlerExceptionResolver`가 에러용 JSON 응답 구성 | ||
| - 인터셉터의 `afterCompletion()`을 호출 | ||
| - 사용한 리소스를 정리 등의 작업 |
There was a problem hiding this comment.
원래는 응답을 반환할 때 ViewResolver를 사용한다고 알고 있었는데 MVC 모델에서 view가 필요하지 않은 JSON 데이터를 그대로 반환하는 경우에도 ViewResolver와 View를 사용할까 궁금했었는데 JSON 데이터를 반환할 때에는 ViewResolver를 사용하지 않다는 것을 알게되었습니다. viewResolver와 함께 DispatcherServlet과 인터셉터의 뷰 반환과정 역시 상세하게 알 수 있었습니다.
전체적으로 1주차 때 배운 내용들을 기반으로 1주차보다 깊게 들어가서 지난 스터디와 연계하며 배울 수 있었습니다. 수고하셨습니다!
No description provided.