채널톡 아이콘
BEST

스프링 핵심 원리 - 기본편

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다.

Thumbnail

초급자를 위해 준비한
[웹 개발, 백엔드] 강의입니다.

이런 걸 배울 수 있어요

  • 스프링 기본 기능

  • 스프링 핵심 원리

  • 객체 지향 설계

스프링 핵심 원리를 이해하고, 
성장하는 백엔드 개발자가 되어보세요!

📢 수강 전 확인해주세요!

  • 본 강의는 자바 스프링 완전 정복 시리즈의 두 번째 강의입니다. 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 로드맵을 먼저 확인해주세요. (바로가기)

스프링 핵심 원리 - 기본편 현재 강의

  • 객체 지향 설계와 스프링
    • SOLID - SRP, OCP, DIP
  • 스프링 컨테이너와 스프링 빈
    • 스프링 컨테이너 - IoC, DI
    • 의존관계 주입
    • 빈 생성주기와 스코프

스프링 핵심 원리 - 고급편

  • 스프링 핵심 디자인 패턴
    • 템플릿 메서드 패턴, 전략 패턴, 템플릿 콜백 패턴, 프록시 패턴, 데코레이터 패턴
  • 쓰레드 로컬
    • 동시성 문제, 멀티쓰레드, 쓰레드 로컬
  • 스프링 AOP
    • 개념, 동작 원리, 실전 예제, 주의 사항

김영한의 스프링 핵심 원리 기본편
객체 지향 설계, 스프링의 핵심 원리 및 기능

 

스프링의 원리부터 핵심 가치까지

단순히 스프링이 제공하는 기능을 배우고 사용하는 것은 어렵지 않습니다. 그런데 스프링이 제공하는 핵심 가치와 원리를 제대로 이해하고 사용하려면 큰 난관에 부딪힙니다. 왜냐하면 IoC(제어의 역전), DI(의존관계 주입) 같은 알듯말듯한 용어부터, SRP, OCP, DIP 같은 소위 SOLID라 불리는 좋은 객체 지향 설계의 원칙들도 함께 이해해야 비로소 스프링의 핵심 원리를 제대로 파악할 수 있기 때문입니다. 

스프링의 진정한 핵심 가치는 바로 객체 지향 프로그래밍(OOP)에 있습니다. 그리고 스프링을 제대로 이해하기 어려운 이유도 이 객체 지향 때문입니다. 다음 단계의 백엔드 개발자로 성장하려면, 스프링이 제공하는 핵심 가치와 원리를 반드시 깊이있게 이해해야 합니다.

이 강의는 스프링이 없던 20년 전으로 돌아가서 스프링이 왜 만들어졌는지 그 이유부터 시작합니다. 그리고 우리도 그때로 돌아가서 스프링 없는 순수한 자바 코드로 예제 애플리케이션을 만들어봅니다. 요구사항이 변경 됨에 따라 문제점들이 하나씩 발견되고, 그 문제를 해결하기 위해 좋은 객체 지향 원리들을 하나씩 코드에 적용하면서 문제를 해결해나갑니다. 이 과정속에서 여러분은 자연스럽게 코드로 좋은 객체지향의 원리(SOLID)와 IoC, DI에 대해서 이해하고, 또 스프링 컨테이너가 왜 필요한지 깨달을 수 있습니다.

스프링의 핵심 원리를 단순히 이론적으로 이해하는 것이 아니라, 예제 애플리케이션을 직접 코드로 개발하는 과정 속에서 자연스럽게 이해하게 됩니다.

강의 목차

  • 1. 객체 지향 설계와 스프링
  • 2. 스프링 핵심 원리 이해1 - 예제 만들기
  • 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용
  • 4. 스프링 컨테이너와 스프링 빈
  • 5. 싱글톤 컨테이너
  • 6. 컴포넌트 스캔
  • 7. 의존관계 자동 주입
  • 8. 빈 생명주기 콜백
  • 9. 빈 스코프

강의의 앞부분(1~3)은 이렇게 객체 지향과 스프링의 핵심 원리에 대해서 설명합니다. 그리고 이후 4. 스프링 컨테이너와 스프링 빈 부터는 스프링이 제공하는 핵심 기능들을 설명합니다. 각 핵심 기능들이 왜 만들어졌는지, 어디에 왜 필요한지, 그리고 가장 중요한 실무에서 어떤 방식으로 사용되는지, 이 부분에 초점을 맞추어 설명합니다.

그래서 스프링의 기능을 단순히 사용하는 단계를 넘어서, 실무에서 어떻게 활용하는 게 좋은 방법인지 제대로 이해하고 사용할 수 있습니다.

이 강의를 듣고 나면

이 강의는 단순히 스프링 레퍼런스 문서에 있는 기능을 하나하나 설명하는 강의가 아닙니다. 기능을 넘어서 왜 스프링을 만들었고, 왜 스프링이 이런 기능을 제공하는지 그 이유와 핵심 원리에 대해서 설명하는 강의입니다.

강의가 끝나면 여러분은 스프링의 기본 기능을 잘 사용하는 것은 물론이고, 스프링의 본질에 대해서 깊이있는 이해를 하게 됩니다. 스프링의 본질을 이해한다는 것은 객체 지향 설계의 본질을 이해하는 것과 같습니다. 따라서 단순히 스프링의 기능만 사용하는 개발자에서 객체 지향 애플리케이션의 설계와 아키텍처 레벨까지 고민하는 개발자로 성장할 수 있습니다.

강의 대상

 

 

스프링을 처음
접하는 개발자

스프링 핵심 원리
이해하고픈 개발자

객체지향 설계
고민인 개발자

김영한 스프링 입문
수강생

스프링 핵심 원리 강의는 스프링을 처음 접하는 개발자부터, 실무에서 스프링을 사용하지만 스프링의 핵심 원리를 제대로 이해하고 사용하고 싶은 개발자 분들을 위해서 준비했습니다. 그리고 객체지향 설계에 고민이 많은 개발자 분들에게도 도움이 됩니다.

앞으로 이어질
스프링 완전 정복 시리즈

스프링을 완전히 마스터할 수 있는 시리즈를 준비하고 있습니다. 실제 실무에서 사용하는 핵심 스프링 기능을 중심으로, 실무에서 쓰이지 않거나 오래된 기능은 과감하게 생략한 실무 노하우를 전수해드릴 예정입니다.

강의 순서


관련 로드맵

스프링 완전 정복 시리즈 
스프링 똑똑하게 시작하기,
핵심 원리부터 실전 활용   이 강의 포함 

 

스프링 부트 + JPA 실무 완전 정복 
최신 실무 기술로 웹 앱을
만들며 학습하고 싶다면  실전 심화 단계 

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 스프링을 처음 접하는 개발자

  • 개발자 취업 준비생

  • 스프링을 코드로 쉽게 이해하고 싶은 개발자

  • 스프링을 공부했지만 어려워서 포기했던 개발자

  • 실무에서 스프링을 사용하지만 스프링의 핵심 원리를 제대로 이해하고 사용하고 싶은 개발자

선수 지식,
필요할까요?

  • 자바 언어

안녕하세요
김영한입니다.

484,794

수강생

30,368

수강평

8,710

답변

5.0

강의 평점

21

강의

진짜 실무에 필요한 제대로 된 개발자가 될 수 있도록, 교육하는 것이 저의 목표입니다.

 

저의 개발 인생 이야기

EO 인터뷰 영상

개발바닥 - 시골 청년 개발왕 되다

취업과 이직에 대한 고민 해결

 

더보기

커리큘럼

전체

65개 ∙ (12시간 5분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

3,985개

5.0

3,985개의 수강평

  • Rammus

    수강평 2

    평균 평점 5.0

    5

    100% 수강 후 작성

    스프링 입문부터 시작해서 DB 2편 강의보고 있습니다. 아마 조만간 로드맵을 모두 완료하지 않을까 싶네요. 사실 김영한님 로드맵 전체에 대한 수강평인데, 여기 기본편에다 남기는게 맞나 싶긴 합니다만 그래도 여기에 쓰겠습니다. 본인이 3년차 이하 주니어다? `무조건` 들으세요. 비하할 생각은 없지만 자신의 회사가 중소기업 또는 si 다? `무조건` 들으세요. 김영한님의 로드맵은요 그냥 단순한 지식 제공을 떠나 진짜 개발자의 사고방식을 레벨업 시키는 명품강의입니다. 현업에서 개발하시는 분들 공감하실겁니다. 이 개발자라는 직업이 사실은, 지식의 빈부격차가 정말 심한 직업입니다. 다시 말해 똑똑한 개발자들은 정말 너무 똑똑하고요. 무식한 개발자는요 솔직히 코더라는 멸칭도 있을만큼 그냥 생각없이 적당히 복사, 붙여넣기하며 하루하루 버티며 일을 합니다. 그런데 여기서 중요한 것은 무식한 개발자라고 해서 본인이 원해서 무식한 개발자가 된 사람은 없을거라는거에요. 자신이 부족하다는 걸 알아도 도무지 `어떻게 공부해야 하는지`자체를 모릅니다. 인터넷 검색으로 뒤져가면서 공부한다? 솔직히 틀린 말이라고 생각합니다. 기술 블로그라고 해서 올라오는 것들 보면 맞는 말도 있겠지만, 틀린 정보도 너무 많고 단편적인 내용이 많아서 진지한 학습에는 도움이 안됩니다. 또 책을 사서 공부해보려고 하니 다들 출간된지 2, 3년은 지난 책들이고 그 사이 버전업에 따른 차이라든지, 기술 스펙 변화라든지 이런게 너무 많아서 현실적으로 트렌드를 따라가지 못한다는 느낌이 듭니다. 그리고 이런 상황에서 개발자도 직장인이라 주어진 업무해야 합니다. 꾸역꾸역 어떻게든 돌아가는 코드를 만들고 또 다음 업무를 하고.. 그렇게 일상은 반복되고 어느 순간부터는 그저 관성적으로 하루하루를 버티는 개발자가 되는거죠. 그런데 김영한님의 강의를 들으면서 느꼈던 것은 `어떻게 공부해야` 좋은 개발을 할 수 있는지 그 공부 방법을 깨닫게 되면서 깊은 감명이 있었다는 겁니다. 또한 강의 중간에 말씀해주시는 실무에서 겪는 문제들과 해결 방법 같은 소소한 팁들.. 이건 말로 어떻게 설명해야 될지 모르겠네요. 진짜 어디가서 돈 주고도 못 배우는 귀중한 노하우들입니다. 소위 네카라쿠배라고 불리는 탑티어 IT 회사들의 개발자들은 어떻게 고민하고 문제를 풀어나가는지를 배울 수 있는 아주 소중한 지식이라고 말하고 싶네요.. 그러니 개발자 취업을 준비하시는 분이라면 꼭 들으시구요. 현직에 계신 분들도 꼭 듣기를 추천하는 바입니다. 가끔 수강료 때문에 고민하시는 분들 있는데.. 사람마다 경제적 상황은 다르니 쉽게 말할 수 없지만 그래도 꼭 들으십시오. 진짜 후회 안합니다.. 그리고 마지막으로 김영한님. 선생님 같은 분이 계셔서 저 같은 개발자도 사람될 수 있었습니다. 앞으로도 건승하시고 강의 많이 찍어주시길..

    • 김영한
      지식공유자

      Rammus님 수강평을 보니 제가 강의하기를 참 잘했다는 생각이 드네요. 저도 좋지 않은 회사나 힘든 SI 프로젝트에서 많이 고생을 해보아서, 말씀하신 지식의 빈부의 격차라는 것이 어떤 것인지 잘 이해하고 있습니다. 제가 소위 말하는 좋은 서비스 회사에서 일할 때 보면, 생각보다 많은 개발자들이 처음부터 좋은 회사에 취업한 것이 아니라, 작은 회사나 SI 부터 시작해서 올라오신 분들도 많이 있습니다. 그 분들의 공통점은 모두 좋은 개발자가 되기 위해, 어떻게 하면 더 나은 방법으로 개발할 수 있는지 끊임없이 고민한 분들이었습니다. Rammus님은 지금 상황이 어떻든 간에 더 좋은 개발자가 되기 위해 지속적으로 노력하시는 분이라는 생각이 듭니다. 응원합니다. 그리고 크게 성장하는 2024년 되시길 바래요 :)

  • OMG

    수강평 205

    평균 평점 5.0

    5

    100% 수강 후 작성

    스프링을 처음 공부했을 때 이게 왜 필요한지, 어디에-어떻게-어떨 때 쓰는지 이해가 잘 가지 않아 책이며 인터넷 강의며 많은 자료들을 찾으면서 공부하였는데요. 스프링 공부를 시작할 때 영한 님의 강의가 있었다면 제가 처음 스프링 공부할 때 겪었던 어려움과 고생이 줄지 않았을까 생각합니다. 스프링 강의가 스프링 강의 전, 객체지향으로 시작하는 구성은 처음 봤는데 영한님은 개발뿐만 아니라 가르침에도 엄청난 능력이 있으신 거 같아요. 영한님 강의 구성을 통해 무엇이 핵심이고 본질인지 파악했고, 그것을 강의 시작으로 녹여낸다는 게 정말 대단하단 말밖에 나오지 않네요. 만약 강의를 다 보고도 이해가 잘 가지 않거나, 강의가 정말 좋은가?라고 의문을 품고 계시다면 책, 인터넷 등을 활용해서 공부하시고 나서 복습하시면 시야가 넓어지면서 전에는 이해하지 못 했던 게 다시 보면 이해되고 이걸 이렇게 쉽게 설명해 주셨다고 느끼는 부분들이 있을 거예요(이 점이 인강의 장점이라 생각하고, 제가 영한님 jpa 강의 보고 느낀 경험담입니다..ㅎㅎ) 그리고 강의에서 다루는 bdd 스타일, assertj 등은 처음 보시면 낯설 텐데 키워드 던져주시는 것들 구글링해서 학습하시면 많은 도움 될 거라 생각합니다. 다음 강의도 기대하겠습니다.

    • 김영한
      지식공유자

      OMG님의 멋진 수강평을 들으니, 이번 강의를 준비하면서 고민했던 저의 솔직한 이야기를 남기고 싶네요. 사실 이번 강의는 정말 고민이 많았습니다. 단순히 스프링의 기능을 하나하나 풀어서 설명하는 강의는 쉽게 만들 수 있다 생각합니다. 그런데 이 강의는 제가 스프링을 통해서 느낀 스프링의 진정한 가치를 전달하고 싶었습니다. 스프링의 기능을 단순히 사용하는 것을 넘어 객체지향의 진정한 가치를 이해하고 객체지향과 스프링을 통해 애플리케이션을 디자인하고 설계하는 즐거움이 무엇인지 알려드리고 싶었습니다. 그럴려면 스프링의 기능을 하나하나 풀어서 설명하는게 아니라, 결국 객체지향 이야기 부터 시작해야 합니다. 특히 객체지향 자체의 이야기를 쉽게 풀어내고 그걸 스프링과 엮어야 하는데, 스프링에 입문 하신 분들께 객체 지향을 어떻게 하면 최대한 쉽게 풀어서 설명할지, 그리고 그걸 어떻게 스프링과 엮어서 설명할지가 정말 어려웠습니다. 결국 몇달동안 제 머리속의 퍼즐을 이렇게 맞추어보고, 저렇게 맞추어보고, 예제코드도 이렇게 만들고 저렇게 만들어보면서 기본흐름을 완성했습니다. 그리고 스프링에 입문 하신 분들이 이 내용을 이해할 수 있을까? 고민하면서 최대한 이해하기 쉽게 다듬고 또 다듬었습니다. 제가 강의를 만들 때는 노트북 앞에 앉아서 강의를 만들기도 하지만, 큰 흐름을 만들 때는 주로 산책을 하면서 생각하는게 좋더라구요. 그래서 이번 강의는 참 많이 걸어다녔어요 ㅎㅎ 덕분에 많이 건강해졌습니다. ㅋㅋㅋ OMG님께서 제가 고민한 흔적들을 알아봐주셔서 그게 참 고맙습니다.

  • Yj Jang

    수강평 1

    평균 평점 5.0

    5

    100% 수강 후 작성

    김영한님 어디계세요?? 앞으로 자기 전에 그 쪽으로 절하고 자려구요.. 좋은 강의 너무 감사합니다

    • 김영한
      지식공유자

      ㅎㅎㅎ Yj Jang님 고맙습니다. 동쪽입니다. ㅋㅋ

  • 임태양

    수강평 2

    평균 평점 5.0

    5

    100% 수강 후 작성

    말이 필요있을까요? 뛰어난 강의력, 철저한 강의 준비, 인터넷 강의 들으면서 이렇게 잘 준비된 pdf 자료나 지루하지 않은 수업을 들어본적은 없는거 같네요 ㅎㅎ. 취업하기이전 면접을 준비하던때 이 강의를 들었다면 적토마를 탄 여포가 되어 면접을 보았을텐데 ㅎㅎ.. 강의 잘 들었습니다. 후속편도 나오면 바로 들으러 가겠습니다!.

    • 김영한
      지식공유자

      고맙습니다. 태양님. 면접관들이 스프링 관련 질문을 많이 물어보았나보네요. ㅎㅎ 저는 그럼 다음 적토마 준비하러 가겠습니다^^!

  • 허문회

    수강평 9

    평균 평점 5.0

    5

    100% 수강 후 작성

    중, 고등학생 때도 인터넷 강의를 듣는걸 선호하지 않았는데, 이번 강의는 정말 재밌게 잘 들었습니다. 원리도 모르고 쓰던 기능들을 이젠 어느정도 이해하고 쓸 수 있게 되었네요. 다음 강의도 기대하겠습니다. 하하

    • 김영한
      지식공유자

      고맙습니다. 현근님^^ 강의가 확실히 전달하는 입장에서도 코드를 바꾸는 과정을 쉽게 설명할 수 있어서 편한점이 많더라구요. 저도 다음강의 열심히 준비할께요.

김영한님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

월 ₩17,600

5개월 할부 시

₩88,000