Thumbnail
BEST 개발 · 프로그래밍 백엔드
스프링 핵심 원리 - 고급편
(5.0)
279개의 수강평 ∙ 6548명의 수강생
121,000원

월 24,200원

5개월 할부 시
지식공유자: 김영한
총 125개 수업 (16시간 41분)
수강기한: 무제한
수료증: 발급
난이도:  입문-초급-중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
중급자를 위해 준비한
[웹 개발, 백엔드] 강의입니다.

스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다.

✍️
이런 걸
배워요!
핵심 디자인 패턴
스프링 고급 기능
스프링 AOP

핵심 디자인 패턴, 쓰레드 로컬, 스프링 AOP
스프링의 3가지 핵심 고급 개념 이해하기

📢 수강 전 확인해주세요!

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

 

스프링 핵심 원리 - 기본편

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

스프링 핵심 원리 - 고급편 현재 강의

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

김영한의 스프링 핵심 원리 고급편
핵심 디자인 패턴, 쓰레드 로컬, 스프링 AOP

실무에서 가장 많이 사용하는 기술
스프링 프레임워크

실력 있는 개발자가 되려면 실무에서 자주 사용하는 도구를 깊이 있게 이해해야 합니다.
스프링은 실무에서 가장 많이 사용하는 백엔드 기술입니다.
따라서 백엔드 개발자라면 스프링을 깊이 있게 이해하는 것이 중요합니다.

스프링 핵심 원리
기본에서 고급으로

우리는 앞서 스프링 핵심 원리 - 기본편에서 스프링과 객체 지향 개발의 기본기를 학습했습니다.
스프링을 깊이 있게 이해하고, 실무에서 실력 있는 개발자가 되려면, 기본편에서 학습한 내용을 기반으로 크게 3가지 핵심 고급 개념을 알아야 합니다. 이번 스프링 핵심 원리 - 고급편에서는 이러한 고급 개념을 학습합니다.

1. 스프링 핵심 디자인 패턴
2. 동시성 문제를 다루기 위한 쓰레드 로컬
3. 스프링 AOP


스프링 핵심 원리
고급편

1. 스프링 핵심 디자인 패턴

스프링의 내부 기술들은 몇 가지 핵심 디자인 패턴으로 만들어져 있습니다. 따라서 스프링을 깊이 있게 이해하기 위해서는 먼저 스프링이 자주 사용하는 핵심 디자인 패턴들을 알아야 합니다.

강의에서 전달하는 핵심 디자인 패턴

  • 템플릿 메서드 패턴
  • 전략 패턴
  • 템플릿 콜백 패턴
  • 프록시 패턴
  • 데코레이터 패턴

강의에서는 이러한 디자인 패턴들을 예제 코드로 하나하나 만들어보면서 아주 쉽게 설명해드립니다. 그리고 이렇게 학습한 디자인 패턴을 애플리케이션에 적용하는 방법도 알아봅니다.

2. 쓰레드 로컬

스프링은 주로 웹 애플리케이션 개발에 사용됩니다. 웹 애플리케이션은 동시에 여러 요청을 처리하기 위해 멀티쓰레드를 사용합니다. 따라서 여러 쓰레드가 경합하는 동시성 문제가 발생할 수 있습니다.

강의에서 전달하는 동시성 문제와 쓰레드 로컬 내용

  • 웹 애플리케이션
  • 멀티쓰레드
  • 동시성 문제

강의에서는 스프링을 사용할 때 발생하는 동시성 문제를 알아보고, 또 동시성 문제를 편리하게 해결할 수 있는 쓰레드 로컬 개념까지 학습합니다. 
쓰레드 로컬은 멀티쓰레드 환경에서 스프링이 어떻게 동시성 문제 없이 잘 작동하는지 이해하기 위한 필수 개념입니다.

3. 스프링 AOP

스프링 AOP는 실무에서 정말 많이 사용되는, 마치 마법처럼 느껴질 정도로 편리한 기술입니다. 많은 개발자가 스프링 AOP를 사용하지만, 스프링 AOP가 어떻게 동작하는지 그 원리를 정확하게 이해하고 사용하는 개발자는 많지 않습니다.

단순히 스프링 AOP의 기능만 알고 사용하는 단계를 넘어서, 스프링 AOP의 동작 원리를 깊이 있게 이해해야 장애가 발생했을 때 근본적인 문제 해결이 가능합니다.

강의에서 전달하는 스프링 AOP 내용

  • 개념, 용어정리
  • 프록시 - JDK 동적 프록시, CGLIB
  • 동작 원리
  • 실전 예제
  • 실무 주의사항

강의에서는 스프링 AOP의 단순한 기능 정리를 넘어서 동작 원리부터 실전 예제, 그리고 실무에서 자주 발생하는 주의 사항까지 스프링 AOP의 모든 것을 정리해드립니다.

기타

추가로 스프링 컨테이너의 고급 기술인 빈 후처리기와 스프링 애플리케이션을 개발하는 다양한 실무 팁도 전해드립니다.

  • 스프링 컨테이너의 확장 포인트 - 빈 후처리기
  • 스프링 애플리케이션을 개발하는 다양한 실무 팁

이 강의를
시작하기 전에

고급편인 만큼 이 강의에서 다루는 내용들은 쉬운 내용들이 아닙니다.
하지만 실력 있는 백엔드 개발자가 되려면 반드시 한번은 공부해야 하는 내용입니다.
포기하지 않고 이 강의를 끝까지 따라오시면 여러분은 개발자로서 엄청난 내공 상승을 경험하고 누구보다 자신있게 스프링을 사용하실 수 있게 됩니다.
어려운 내용이니만큼 저도 철저하게 강의를 준비했습니다. 여러분이 이 내용들을 본인 것으로 완성할 수 있게 도와드리겠습니다.


이 강의를
이런 분들께 추천합니다

스프링을 더 깊게
알고 싶은데…

스프링의 고급 개념을
학습함으로써 실력을
더 키우고 싶은 분

스프링 AOP를
사용하기는 하는데…

스프링 AOP의 동작
원리를 정확하게
이해하고 싶은 분

스프링을 코드로
이해하고 싶은데

디자인 패턴을 통해
스프링의 내부 기술을
이해하고 싶은 분

스프링으로 웹 앱을
만들 생각인데

쓰레드 로컬을 통해
스프링 동시성 문제를
이해하고 싶은 분


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

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

강의 순서


이 강의와 관련된
강의 로드맵

김영한의 스프링 완전 정복 시리즈
스프링 핵심 원리~실전 활용이 강의 포함

스프링 부트 + JPA 실무 완전 정복
내공있는 백엔드 최신 실무 기술실전 심화편


지식공유자가 알려주는
강의 수강 꿀팁!
🎓
이런 분들께
추천드려요!
스프링을 깊이있게 이해하고 싶은 개발자
스프링을 코드로 쉽게 이해하고 싶은 개발자
개발자 취업 준비생
스프링을 공부했지만 어려워서 포기했던 개발자
실무에서 스프링을 사용하지만 스프링의 핵심 원리를 제대로 이해하고 사용하고 싶은 개발자
📚
선수 지식,
필요한가요?
자바 언어
스프링 핵심 원리 - 기본편

안녕하세요
김영한 입니다.
김영한의 썸네일
커리큘럼 총 125 개 ˙ 16시간 41분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 소개
강의 소개 미리보기 03:02
수업 자료
강의 소스 코드
섹션 2. 쓰레드 로컬 - ThreadLocal
필드 동기화 - 개발 미리보기 12:37
필드 동기화 - 적용 05:01
필드 동기화 - 동시성 문제 06:03
동시성 문제 - 예제 코드 18:05
ThreadLocal - 소개 미리보기 03:03
ThreadLocal - 예제 코드 05:38
쓰레드 로컬 동기화 - 개발 06:10
쓰레드 로컬 동기화 - 적용 03:12
쓰레드 로컬 - 주의사항 04:16
정리 03:34
섹션 3. 템플릿 메서드 패턴과 콜백 패턴
템플릿 메서드 패턴 - 시작 07:23
템플릿 메서드 패턴 - 예제1 03:29
템플릿 메서드 패턴 - 예제2 10:15
템플릿 메서드 패턴 - 예제3 04:45
템플릿 메서드 패턴 - 적용1 12:39
템플릿 메서드 패턴 - 적용2 05:10
템플릿 메서드 패턴 - 정의 06:47
전략 패턴 - 시작 01:46
전략 패턴 - 예제1 11:02
전략 패턴 - 예제2 09:47
전략 패턴 - 예제3 11:16
템플릿 콜백 패턴 - 시작 04:46
템플릿 콜백 패턴 - 예제 04:12
템플릿 콜백 패턴 - 적용 12:42
정리 06:30
섹션 4. 프록시 패턴과 데코레이터 패턴
프로젝트 생성 03:14
예제 프로젝트 만들기 v1 15:27
예제 프로젝트 만들기 v2 05:50
예제 프로젝트 만들기 v3 04:44
요구사항 추가 03:03
프록시, 프록시 패턴, 데코레이터 패턴 - 소개 12:59
프록시 패턴 - 예제 코드1 05:21
프록시 패턴 - 예제 코드2 08:03
데코레이터 패턴 - 예제 코드1 03:46
데코레이터 패턴 - 예제 코드2 06:03
데코레이터 패턴 - 예제 코드3 05:31
프록시 패턴과 데코레이터 패턴 정리 04:37
인터페이스 기반 프록시 - 적용 24:42
구체 클래스 기반 프록시 - 예제1 03:34
구체 클래스 기반 프록시 - 예제2 08:42
구체 클래스 기반 프록시 - 적용 13:14
인터페이스 기반 프록시와 클래스 기반 프록시 05:10
정리 05:35
섹션 5. 동적 프록시 기술
리플렉션 18:45
JDK 동적 프록시 - 소개 02:57
JDK 동적 프록시 - 예제 코드 17:18
JDK 동적 프록시 - 적용1 14:17
JDK 동적 프록시 - 적용2 06:48
CGLIB - 소개 02:50
CGLIB - 예제 코드 12:16
정리 04:56
섹션 6. 스프링이 지원하는 프록시
프록시 팩토리 - 소개 07:20
프록시 팩토리 - 예제 코드1 12:41
프록시 팩토리 - 예제 코드2 07:40
포인트컷, 어드바이스, 어드바이저 - 소개 05:08
예제 코드1 - 어드바이저 05:35
예제 코드2 - 직접 만든 포인트컷 09:13
예제 코드3 - 스프링이 제공하는 포인트컷 03:04
예제 코드4 - 여러 어드바이저 함께 적용 11:01
프록시 팩토리 - 적용1 08:24
프록시 팩토리 - 적용2 03:44
정리 05:57
섹션 7. 빈 후처리기
빈 후처리기 - 소개 미리보기 03:51
빈 후처리기 - 예제 코드1 06:25
빈 후처리기 - 예제 코드2 12:03
빈 후처리기 - 적용 16:32
빈 후처리기 - 정리 04:59
스프링이 제공하는 빈 후처리기1 14:41
스프링이 제공하는 빈 후처리기2 08:27
하나의 프록시, 여러 Advisor 적용 03:22
정리 03:08
섹션 8. @Aspect AOP
@Aspect 프록시 - 적용 09:10
@Aspect 프록시 - 설명 07:35
정리 01:09
섹션 9. 스프링 AOP 개념
섹션 10. 스프링 AOP 구현
프로젝트 생성 04:42
예제 프로젝트 만들기 04:55
스프링 AOP 구현1 - 시작 08:21
스프링 AOP 구현2 - 포인트컷 분리 03:50
스프링 AOP 구현3 - 어드바이스 추가 10:00
스프링 AOP 구현4 - 포인트컷 참조 03:14
스프링 AOP 구현5 - 어드바이스 순서 05:39
스프링 AOP 구현6 - 어드바이스 종류 28:06
정리 01:58
섹션 11. 스프링 AOP - 포인트컷
포인트컷 지시자 03:15
예제 만들기 07:26
execution - 1 11:53
execution - 2 13:01
within 05:06
args 07:10
@target, @within 13:40
@annotation, @args 04:22
bean 03:34
매개변수 전달 16:00
this, target 22:40
정리 04:32
섹션 12. 스프링 AOP - 실전 예제
예제 만들기 04:35
로그 출력 AOP 04:09
재시도 AOP 12:08
정리 03:40
섹션 13. 스프링 AOP - 실무 주의사항
프록시와 내부 호출 - 문제 13:28
프록시와 내부 호출 - 대안1 자기 자신 주입 06:32
프록시와 내부 호출 - 대안2 지연 조회 04:45
프록시와 내부 호출 - 대안3 구조 변경 06:04
프록시 기술과 한계 - 타입 캐스팅 11:05
프록시 기술과 한계 - 의존관계 주입 10:48
프록시 기술과 한계 - CGLIB 04:44
프록시 기술과 한계 - 스프링의 해결책 07:29
정리 04:36
섹션 14. 다음으로
다음으로 35:50
강의 게시일 : 2021년 10월 27일 (마지막 업데이트일 : 2022년 05월 15일)
수강평 총 279개
수강생분들이 직접 작성하신 수강평입니다. 수강평을 작성 시 300잎이 적립됩니다.
5.0
279개의 수강평
5점
4점
3점
2점
1점
VIEW 좋아요 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
김필환 thumbnail
이번에는 정말 길었네요. 드디어 스프링의 3대 기술중 하나인 AOP를 이해를 할 수 있어서 너무 기뻤습니다. 마치 C언어의 포인터 처럼 저한테는 난공불락(?) 의 기술 같았거든요. 이번에도 차근차근 설명해주시는 것이 너무 좋았습니다. 이정도로 AOP 를 쉽게 가르쳐 주는 강의나 책은 아마 없을거 같습니다. 스프링을 본격적으로 알고 싶으신 분은 꼭 보셔야 합니다. 그리고 영한님께 감사 인사로 저의 스프링 개발자 도전기를 쓰려고 합니다. ============== 무언가 새로운 시도를 할 때는 처음에 정말 많은 에너지가 필요합니다. ...(중략)... 우선 공부하는 습관을 만드는게 정말 중요합니다. 그리고 개발 공부는 특히 모든 것을 실행해보고, 코딩해봐야 합니다. 책만 읽고 강의만 듣기만 해서는 절대 자기것이 안됩니다. 공부는 평일 3~4시간, 주말 8시간씩 꾸준하게 하시는 것을 추천드립니다. ============== 2020년 10월. 지금까지 python 개발자로 지내면서 제 커리어에 한계상황임을 인정하고 Spring 백엔드 쪽으로 커리어를 틀고 싶다고 영한님께 조언을 구하는 메일을 보냈습니다. 그 때 영한님께 위와 같은 답변을 받았습니다. 조금은 충격이었고, 많은 각오가 필요하겠구나 라고 느꼈습니다. 연차로 보면 이미 시니어 레벨로 접어든 상황이고, 어중간하게 java 에 대해 알고 있던 터라 도전은 정말 쉽지 않았습니다. 번번히 면접에서 낙방을 거듭했습니다. 작년 초 우아한 형제들의 면접에서 떨어졌을 땐 거의 1달 반 공부가 잘 안되었던 걸로 기억나네요. 영한님이 말한대로 3~4시간은 현실적으로는 어려웠지만 그 중 절반정도라도 하려고 했던거 같습니다. 사실 면접 중에서 여기 강의 내용이 자주 나온 건 아니었지만 영한님이 다루시는 강의 내용 덕에 더 깊게 백엔드 기술을 보는 눈이 길러진 것이 제일 도움이 되었던 것 같습니다. 그리고 훨씬 높은 기준으로 공부해야 한다는 사실도 말이죠. (강의에서 파생되는 것을 자기 것으로 만들려고 노력했던 거 같습니다.) 저의 노력이 통했는지... 올해 3월 말에 네카라쿠배 중 한 곳으로 가게 되었습니다. 아직 저 자신은 부족하다고 느끼지만 정말 길었던 1년 반의 준비기간이 끝나고 기회가 주어지니 설레기도 하고, 조금 걱정도 됩니다. 코로나가 끝나고 저도 새로운 자리에 적응될때 쯤 직접 감사인사 드리러 가겠습니다. 영한님 감사드립니다.
2022-03-07
지식공유자김영한
필환님 진심으로 축하드려요. 누구나 순간적인 열정을 가지기는 쉽지만, 필환님 처럼 그것을 습관으로 만들고 시스템화해서 지속가능하게 이어가는 것은 쉽지 않다 생각합니다. 특히 지금까지 개발한 언어도 자바가 아니고, 경력도 많으셔서 일반적인 주니어 개발자보다 좋은 회사에 취업하는 것이 더 불리한 상황이라 생각했습니다. 그런면에서 필환님 스스로 얼마나 노력하셨는지가 보이고, 스스로 만들어낸 큰 성과라 생각합니다. 그리고 경력이 많으셔서 기본기 보다는 실제 활용이 어떻게 되는지를 실무에서 많이 물어보았을 것인데, 이런 부분들까지 커버되도록 강의 내용을 단순히 학습하는 것을 넘어서 체득하신 것도 잘 하신 것이라 생각합니다. 현재 대부분의 회사들이 개발자가 부족하기 때문에 제가 필환님께 드린 조언처럼 공부해서 그에 상응하는 실력만 갖추게 된다면 누구나 좋은 회사에 취업할 수 있다 생각합니다. 마지막으로 저에게도 취업과 이직에서 힘든 나날들이 있었는데, 필환님의 글이 취업이나 이직을 준비하는 분들께는 정말 큰 힘이 될 것이라 생각합니다. 진심으로 고맙습니다.
2022-03-08
Charlie T thumbnail
스프링 AOP 교육 마스터피스. 최고의 강의 드릴 수 있는 최대 별 갯수가 5개밖에 되지 않아 강사님께 죄송할 뿐입니다.. 좋은 강의 정말 감사드립니다. 사족을 달자면 강사님의 코드를 따라 실습한 뒤에 나중에 따로 SpringObjenesis, CGLIB와 JDK 동적 프록시 등의 내부 구현 로직도(ProxyFactory, ObjenesisCglibAopProxy 등) 같이 디버깅해가며 보면 훨씬 더 많은 것을 얻어가실 수 있을 것 같습니다. 개인적으로 ProxyFactory proxyFactory = ProxyFactory(인터페이스없는컴포넌트);로 초기화하는 순간을 디버깅하여 CGLIB의 Enhancer까지 타고들어가 규칙에 맞게 여러가지 절차를 거쳐 최종적으로 getProxy()의 결과값으로 프록시 객체를 생성 및 반환할 때 objenesis를 사용하는 것을 눈으로 직접 보게 되었는데, 강사님의 강의를 보기전이었다면 해당 워크플로우의 윤곽을 전혀 알지 못해 아무것도 이해하지 못했을 겁니다.. 또한 EnableAspectJAutoProxy와 관련된 AspectJAutoProxyRegistrar 클래스가 @Aspect 애너테이션이 붙은 타입들을 가져오고, 이어지는 로직에서 BeanPostProcessor를 사용해 실제 객체 대신 프록시 객체들을 스프링빈으로 등록해주는 과정도 따로 찾아보는 동안 스프링 aop에 대한 이해가 많이 향상됨을 느꼈습니다. 큰 그림을 먼저 보여주심으로써 실제 로직의 세부동작방식을 이해할 수 있도록 해주신 점 깊이 감사드립니다.
2021-11-07
지식공유자김영한
Charlie T님 열심히 들어주셔서 고맙습니다. 이런 수강평 덕분에 또 다음 강의를 준비할 힘을 얻게 되네요^^!
2021-11-07
JongSeong Kim thumbnail
영한님의 강의는 문을 열어주는 강의가 아닌 문고리를 잡고 돌리는 법을 알려주는 강의인 것 같습니다. 항상 좋은 강의 보여주셔서 감사합니다 ㅠㅠ
2021-11-16
지식공유자김영한
JongSeong Kim님 멋진 비유 감사합니다^^!
2021-11-16
OMG thumbnail
서포터즈 이후 처음으로 강의(메뉴얼)에 조금이나마 기여한 부분이 있어 이전의 강의보다 의미있는 고급편 강의였습니다. 앞으로도 좋은 강의 잘 부탁드립니다 :)
2021-12-07
지식공유자김영한
OMG님 항상 열심히 공부하시고, 또 서포터즈 활동도 열심히 해주셔서 진심으로 고맙습니다!
2021-12-08
!? thumbnail
토비의 스프링 6장 보고 멘붕와서 잠시 책을 덮었었는데 이 강의 완강하고 다시 펴러 가야겠습니다. 완강 후기) 처음에는 125강이라는 강의 규모에 압도되었는데 왜 이렇게 강의 규모가 커진지 들으면서 이해가 되었습니다. 강의 마지막에 하신 말씀처럼 더욱 많은 코드를 접하고 더욱 많은 레퍼런스들을 보면서 힘내보겠습니다. 이제 이해가 부족한 다른 디자인 패턴에 대해서 공부하러 가야겠습니다. 다음 강의때 더 나아진 모습으로 들으러 오겠습니다.^^
2021-10-28
지식공유자김영한
!?님 첫 수강평 감사합니다^^ 항상 응원합니다!
2021-10-28
연관 로드맵
이 강의가 포함된 잘 짜여진 로드맵을 따라 학습해 보세요!
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의를
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스