본문 바로가기
T.I.L. :: Today I Learned/항해99 14기 본과정

Day 21. 봄이 오고 Spring도 왔ㄷㅏ... : )

by DaSsom 2023. 4. 23.

어느덧 3주가 지났네요 시간 정말 빠르다. 이번주의 가장 큰 목표는 스프링 부트에 최대한 익숙해지는 것이었다.

나의 공부 스타일대로라면 나는 처음부터 모든걸 완벽하게 알지 못한다. 그래서 그냥 최대한 강의를 많이 보고 익숙해지려고 노력했다 ~ 

 

JPA 는 Java Persistence API! 처음엔 이 단어가 명확하게 이해되지 않았지만 JPA는 인터페이스이고 이것을 사용하는 방법은 다양하다라는 것을 이해하고 보니 이제는 알 것 같다. 내가 직접 JPA를 사용하고 싶다면 인터페이스에 명세되어 있는걸 직접 구현해서 사용하거나? ORM 프레임 워크를 사용해서 이용하면 된다.

 

그러면 JPA 가 알아서 DB와 연결된 모든 일들을 처리해준다. 그렇다고해서 내가 원하는대로 전부 맞춰서 쿼리를 짜주지는 않는다. 그래서 백엔드 개발자는 SQL 공부를, 그래서 데이터베이스에 대한 학습을 필수적으로 해야하는 것이다.!

 

스프링 부트를 사용해서 제일 편했던건 annotation을 사용하는 것이었다. 아직 기초수준의 간단한 서버 구축 과제를 해결해본 게 다였지만, 어노테이션을 통해서 getter, setter, 생성자 등 내가 일일히 만들어주지 않아도 된다는 점이 개발의 효율을 올려주었다. 그리고 내가 직접 설정하다보면 하나 둘씩 실수로 놓치기 마련인데 그런 부분이 보완이되니 나는 서비스 로직만 잘 짜면 되는 거였다. 

스프링이 DI 패턴을 가지고 IOC 설계 원칙을 준수하기 때문에 생성자나 메소드, 객체로 의존성을 주입해주면 스프링이 알아서 객체를 관리해주니 편리했다. 

 

아 그리고 IOC 라는 개념도 처음에는 잘 이해가 되지 않았는데, 일단 제어의 역전 이라는 말 자체가 어려웠다. 말을 좀 풀어서 이해해보면, 제어가 역전되었다, 라는 뜻인데 내가 사용할 객체들을 내가 아니라, 스프링에서 관리를 해주니까 그걸 보고 역전되었다 라는 말을 사용한 것 같다. 

이렇게 제어가 역전이 되는 스프링에 의존성을 주입하여 개발을 하면 코드 테스트가 쉬워진다고 한다. 하지만 이 점은 아직 체감하지 못했다. TDD에 대해 제대로 알지 못하는 것도 있고 모든 기능을 Postman을 사용해서 url을 입력해서 체크했기 때문이다. 하지만 인텔리제이에서 테스트 코드를 만들고 그 코드로 기능의 동작 여부를 체크한다면 여러가지로 편해질 것 같긴하다. 기능별로 테스트 로직을 준비해서 테스트만 하면 되니까..! 그렇지만 아직 테스트 코드를 준비하는 것도 새로운 기능을 만드는 것 만큼 익숙하지 않기 때문에 이 부분은 조금 더 공부를 해봐야 알 것 같다.

인텔리제이에서 스프링 프로젝트를 구성하면 자동으로 test라는 디렉토리가 생기던데 궁금하긴 하네.. 그러고보니 정처기 공부할 때 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트 에 대해서 공부했었는데 아마 이 테스트들이 그 범주에 들어가는 녀석들인 것 같다.

 

이렇게 점점 내가 모르는게 무엇인지 알아나간다는게 메타인지의 시작이겠지? 😀 이번 주 학습도 일단은 이렇게 마무리 ~ 오늘은 일요일이니 조금 휴식의 시간을 가지고 낼부터 다시 화이팅 하는 것으로 !!!!!! 화이링 🌸