TIL221222

5w31892p·2022년 12월 22일
0

Dev.TIL

목록 보기
39/66

🙊 Today I Learned

  1. 심화 시작
  2. TIL 작성법 특강
  3. REST API 특강
  4. Spring의 Triangle

이제까지 TIL을 정말 잘못썼다는 것을 느꼈다.
앞으로는 문시해알 만 생각하며 작성해야겠다.

그리고 또 따로 정리를 했더라도 문시해알에 맞게 TIL에 다시 한번 되새김질 해야한다.

문제점

어제 스프링 입문을 위한 자바 객체 지향의 원리와 이해 라는 책을 보고 스프링의 삼각형이라 불리는 ioc, di, aop, psa가 있다고 하는데 도대체 뭔 말 인지 모르겠다.

오늘 특강으로 REST API에 대해서 했는데 튜터님 말이 느려서인지, 중간 중간 무음 공간이 있어서 인지 집중도 되지 않고 잘 이해도 되지 않았다.

숙련차 과제로 구글링 후 알게된 CustomException 코드를 따라치기는 했지만 상세히 이해가 안되던 부분들이 있었다.

시도한 것

혼자 구글링으로 IOC/DI, AOP, PSA에 대해 찾아봤다.
이런 저런 글들이 많고, 설명도 어려워서 하나의 블로그만 보기는 포기했다.
그래서 해당 블로그 이해 되는데까지 보고 또 다른 블로그로 이해되는데까지 보고 반복했다.

강의 노션 자료도 내일 오전쯤 되어야 올라올 것 같아서 구글링해서 먼저 찾아보기로 했다.
그래서 이것도 위와 같은 방법으로 찾아야겠다라는 마음으로 했으나 단번에 이해가 쏙쏙되게 하는 블로그를 발견해서 해당 블로그를 꼼꼼히 읽었다.

이번엔 코드를 하나하나 만져보고 어디와 어디가 연결됐는지 확인했고, 코드를 이렇게 다시 써보고, 이 코드는 지워보고 하면서 코드를 만져보았다.
그러면서 배운적이 없거나 잘 모르는 어노테이션이나 속성등이 나오면 구글링해서 찾아보고 또 다시 코드보고 하는 방법을 시도했다.

해결

숙련 강의에서 IOC/DI에 대해서는 대략적으로 듣고 넘어가서 내용을 잘 몰랐는데, 혼자 찾아보고 정리하면서 완벽하게는 아니지만 책을 읽으면서 잠깐 나오는 내용 정도 이해할 정도로는 해결이 됐다.

찾아봄으로써 특강에서 튜터님이 했던 말들이 그대로 있었다.
다만, 내가 찾아본 블로그에서의 설명이 나에게는 더 와닿았고, 이해가 더 잘되었다.
북마크해놓고 저 분 블로그 하나하나 보면서 필요한 지식들 이해하고 넘어가는게 좋을 것 같다.

어노테이션이나 속성 등에 대해서 완벽하게 이해되서 해당 코드들이 이해가 된 것은 아니다.
우선 대략적으로 저런 의미로 쓰인것이구나 하고 넘어가되 코드들의 연관 관계를 보려고 했다.
그래서 이 클래스가 필요할까? 싶었던 것들도 아 여기서 이렇게 쓰이는구나 하면서 이해가 됐다.

알게 된 것

IoC/DI, AOP, PSA는 스프링의 3대 특징으로 스프링의 삼각형이라 불리는 것이였다.
DI는 의존성 주입이면서, 직접 생성하는게 아니라 외부에서 생성 후 주입하는 것,
IOC는 제어의 역전, 의존의 역전이라고 불리며 객체 의존성을 역전 시키는 것이다.
즉, 호출 작업을 외부에서 결정되게 하는 것이고,
이 두개를 묶는 이유는 의존이라는 단어에 있고, 둘 다 객체 간 결합도 줄이고, 유연성을 높이는 공통점이 있어서 묶어 하나로 표현 하는 것이라고 이해 했다.

그리고 AOP와 PSA는 아직 한번도 듣지 못한 단어였는데.
AOP는 각 관점으로 나눠보고 그 관점을 기준으로 기능을 하나로 묶는 것이라고 한다.
계속 반복적으로 사용은 하는 것들을 분리하여 모듈화 후 재사용하겠다는 취지를 가진 것이 AOP라고 한다.
PSA는 일관성 있는 서비스 추상화라고 하는데 말이 조금 어려워 추후 프로젝트 끝나고 다시 찾아 공부해볼 예정이다.

API는 나와 전자기기 사이의 리모컨, 식당에서 주문 받는 나와 요리사 사이의 점원 이고, 이처럼 애플리케이션과 운영체제, 애플리케이션과 프로그래밍 언어가 제공하는 기능 사이의 상호 작용을 도와준다고 한다.

그리고 REST API란 HTTP URI로 표현하고, HTTP Method로 정의하는 것이다.
설계 가이드도 있다.
마지막에 / 금지, 언더바 사용금지, 명사 사용 (되도록 복수), 파일 확장자 포함하지 말 것...
등 많은 가이드가 있었다.

저번 입문 강의 때 restful하게 했냐 안했냐 이런 질문이 있었는데 그때 대충 찾아봤을 땐 뭐 잘했니? 요정도로 알아먹었었다.

하지만 이제 RESTFUL하다라는 말 뜻을 알게 되었고, 이는 가이드 잘 따라서 했다는 뜻이다.
그렇게 보자면 저번 프로젝트 때 난 RESTFUL하지 못했다.
첨엔 하나로 통일해서 했다가, 또 멋대로 바꿨다가, 아주 혼자 난리파티였다.

코드들의 연관관계를 보게 되었고, 전에 프로젝트나 강의를 보며 따라치던 것들이 자세한 이유도 모르고 썼던 것들이 많았는데,
이게 이렇게 여기와 연결되서 나한테 이게 보이는거구나를 하나하나 보게 되니 코드가 이해하기 쉬웠다.
이전까지는 어떤 내용인지도 모르고 하라니까 해서 이해가 되질 않으니 짜증만나고 욕만 나오고 혼자서 하질 못했던 것이였다.

이제 저거 하나 이해한것 뿐이라 다른 모든 것들을 엄청나게 잘 할 것은 아니겠지만, 전보단 훨씬 수월하게 할 수 있겠다는 생각이 들었다.


혼자 찾아보고 공부하고 하는 것도 참 중요하다.
뭔가에 의존하면서 공부하다 보면 그게 끝나거나 없어지면 못할 것 같기 때문이다.
RESTFUL 뜻도 제대로 알았고, 더 필요하지만 스프링 3대 특징도 공부했으니 다음 프로젝트 땐 더 발전된 모습이 되어 있을 것이다.

이번주가 내일이면 끝나지만 내 목표는 주말까지 포함하여, 입문, 숙련 꼭 다 이해하고 넘어갈 수 있게하고, 심화까지도 이해가 되게끔 공부하기.

다른 더 중요한 것들도 많지만 우선은 프로젝트가 코앞이니 팀원들에게 보탬이 될 수 있게 하기.

0에서 부터 시작하는 것이니 수험생처럼 공부해야 남들을 따라갈 수 있다.


📜 IoC/DI, AOP, PSA

📜 CustomException 만들기

📜 API, REST API, RESTful API

📜 특강_TIL 작성법


🙈 Tomorrow

  1. 심화 시작
  2. lv2 코드리뷰 정리
  3. IoC/DI, AOP, PSA 정리

0개의 댓글