본문 바로가기
Book & Lesson

[강의] 유데미 Spring Boot 강의추천 (Spring 개념, Ioc/DI/Beans/Component/Autowired)

by 카프리썬_ 2024. 5. 4.
728x90
728x90

 

목차

     

    수강목적

    일하면서 스프링부트 기반의 코틀린으로 API 개발작업을 주로 하고 있다. 

    그런데 코틀린은 물론이고 스프링의 '스' 조차도 회사와서 처음 알게 되었다...

    물론 일하며 익혀온것도 있지만 전반적으로 기본기를 튼튼하게 다지고 싶었다.

    그래서 글또 활동 덕분에 유데미로부터 쿠폰을 지원받아 Spring boot 프로젝트 관련 강의를 선택했다. 

     

    강의소개 

    유데미 강의 제목은 "옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트" 이다.

    강사분은 한국분이시고, 이름이 독특하고 재치있으시다 (실제로 강의도 딱딱하지 않고 재미있는 스타일이였다ㅎㅎ)

     

     

    개인적으로 일반적인 이론수업 보다는 이해하고 따라해보면서 직접 실습으로 익히는 스타일을 선호한다.

    '첫 Spring Boot 프로젝트'라는 강의명처럼 강의를 통해 실제로 간단한 RestAPI를 구현한다.

     

    총 강의 진행시간도 짧은 편이라서 후딱후딱 가볍게 기본기를 훑고 지나가기 좋았다. 

    총 강의 진행시간은 짧은 편이다. (약 5시간?)

    기존에 회사 소스를보면서 어느정도 흐름을 알고 있던 편이라 이해도 잘 된걸지도 모르겠지만, 

    강사님이 친구한테 설명하듯 굉장히 가볍고 쉽게 설명해주시는 편이라 스프링부트를 처음 접하는 분들에도 좋을것 같다. 

     

    좋았던점

    1.한국어 강의 

    유데미에서 쉽게 찾을 수 없는 한국어 강의다. 강사님의 에너지가 넘치고 밝은 기운이 느껴진다.ㅎㅎ

    어쩐지 송아지할때 송아 김송아입니다 멘트부터 심상치 않으셨다.

     

    2.강의 스타일 

    직접 같이 해볼까요~ 거의 라이브처럼 하나하나 같이 확인하고 설명해주는 스타일이셔서 좋았다.

    intellj를 키고, start.spring.io를 같이 설정하고,

    하나하나 프로젝트 구조와 코드를 하나하나 살펴보며 설명해주신다. 

     

    코드로 동작하는 과정만 이해하고 알고 있었는데, 전반적인 spring 개념과 원리를 이제 알게되니

    그래서 그렇게 동작하는구나..! 라고 깨달은 부분이 많았다. 마치 정답을 보고 다시 원리를 이해하는 느낌? 

     

    아쉬웠던점 

    1.난이도 선택

    개인적으로 나에게 난이도 선택이 미스(?)였다.

    아무래도 비전공자 대상의 백엔드 관련 강의인듯하다. 

    이제는 그저 request, API 라는 한 단어만으로도 이해가 되는 나에게,

    http 땡땡 슬레쉬 슬레쉬 라고 부터 시작하면서 편지로 비유하면서 설명해주시는게 오히려 어색했다. 

     

    2.Spring Boot 2.x 버전으로 진행한다. 

    물론 강의가 만들어진 시점에서는 Spring Boot 2 버전이 존재했겠지만,

    내가 강의를 듣고 있는 시점에서는 2023년 11월 이후로 Spring Boot 2 버전 지원이 종료되었다. 

    현재 2024년 1월 기준으로는 Spring Boot 3.2.2 버전이 최신인데도 불구하고, 여전히 2버전 강의인점이 아쉬웠다.  

    대신 강의를 수강하면서 2.7버전으로 사용할수 있는 알집파일을 따로 공유해주시긴 한다. 

     

     

    배운점

    Spring 주요개념

    -Ioc : Inversion Of Control (제어의 역전)

    프로그램의 흐름을, 객체의 흐름을 , 스프링빈의 흐름을 제어하는 주체가 정반대로 뒤집힌다.

    내가 아니라 스프링이 직접 한다는 것! 제어권을 스프링이 가지고 있다. 

    -DI : Dependency Injection (의존성 주입)

    IoC에 의해 객체 제어권을 스프링이 가지고,나는 객체를 직접 만들어서 쓸 수 없다.

    그래서 사용하기 위해서 의존성을 주입을 해달라고 요청하고 스프링은 주입을 한다. 

    -Container : 스프링이 객체를 만들어서 관리하기 위해 담아두는 공간

    -Spring Bean : 스프링이 컨테이너에 담아놓고 관리하는 객체

    Spring MVC

    - Model  : 데이터처리(연산), 로직 

    - View : 화면, API단에선 endpoint (사용자)

    - Controller  : Model - View 중간매개체

    클래스명으로 구분하자면 Model -> Service , Repository, Controller->Controller

     

    회사코드로 어떻게 동작하는지만 알고 있었는데

    자바 배울때 기억저편에 있던 MVC까지 오랜만에 끄집어내면서

    Service, Repository 등등 왜 이렇게 구성되어 있었는지에 대한 해답을 이제 알게 되었다.

    Spring Bean

    @Component : 스프링빈 등록해줘!

    스프링이 객체를 생성하고 관리하려면, 컨테이너에 스프링 빈이 있어야한다. 그래야 필요할때마다 우리가 꺼내씀.

    즉, 결국 우리는 스프링빈으로 등록해달라고 요청만 하면 된다. 

     

    또하나 알게된 사실은 늘 항상 API로직을 추가할때 @Service 어노테이션을 추가했는데, 

    실제로 사용하고 있던 코드에서 봐보니 @Service 어노테이션은 @Component를 포함하고 있었다...!

    뿐만 아니라 @Repository어노테이션도 @Component를 포함하고 있었다..! 

    직접 내가 담당하고 있는 스프링부트 프로젝트에서 확인해봤다..! 

     

    결국, 로직을 추가하던 Service 클래스 또한 스프링빈으로 등록이 되었고, 

    DB에서 데이터를 불러오는 Repository 클래스 또한 스프링빈으로 등록이 되었어서 바로 쓸 수 있었던 것이다.

     

    @Autowired : 등록된 빈을 사용하게 주입해줘!

    스프링 컨테이너에 들어있는 빈 중에 넣을만한(내가 쓰고싶은 객체로 사용할만한) 빈이 있으면 넣어줘!  

     

    총평

    일 하면서 당연하게 사용하던 부분들이 강의를 듣고 왜 이렇게 되는지 그 원리를 알게 되었다. 

    특히 스프링 IoC개념과 스프링빈을 등록하고 주입하는 근본적인 개념을 이해하니

    마침 테스트코드를 작성하던 업무에서 빈을 주입하며 헷갈리던 부분까지 퍼즐이 맞춰진 기분이였다. 

     

    스프링부트를 아무것도 모르고 비전공자임에도 백엔드개발자를 준비하려는 분들에게 추천드립니다..! 

    (나도 시작부터 들었더라면 좋았을테지만, 지금이라도 백엔드로 전향해야하남 ㅇㅅㅇ)

     

     

    728x90
    반응형