springboot

강의목차

jeri 2024. 9. 23. 00:49
반응형

01. 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

1. 프로젝트 환경설정

  • 프로젝트 생성
  • 라이브러리 살펴보기
  • View 환경설정
  • 빌드하고 실행하기

2. 스프링 웹 개발 기초

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API

3. 회원 관리 예제 - 백엔드 개발

  • 비즈니스 요구사항 정리
  • 회원 도메인과 리포지토리 만들기
  • 회원 리포지토리 테스트 케이스 작성
  • 회원 서비스 개발
  • 회원 서비스 테스트

4. 스프링 빈과 의존관계

  • 컴포넌트 스캔과 자동 의존관계 설정
  • 자바 코드로 직접 스프링 빈 등록하기

5. 회원 관리 예제 - 웹 MVC 개발

  • 회원 웹 기능 - 홈 화면 추가]
  • 회원 웹 기능 - 등록
  • 회원 웹 기능 - 조회

6. 스프링 DB 접근 기술

  • H2 데이터베이스 설치
  • 순수 Jdbc
  • 스프링 통합 테스트
  • 스프링 JdbcTemplate
  • JPA
  • 스프링 데이터 JPA

7. AOP

  • AOP가 필요한 상황
  • AOP 적용

02. 스프링 핵심 원리 - 기본편 v2023-12-04

1. 객체 지향 설계와 스프링

  • 이야기 - 자바 진의 추운 겨울과 스프링의 탄생 15:22 
  • 스프링이란? 14:30 
  • 좋은 객체 지향 프로그래밍이란? 21:21 
  • 좋은 객체 지향 설계의 5가지 원칙(SOLID) 18:14 
  • 객체 지향 설계와 스프링 08:29

2. 스프링 핵심 원리 이해1 - 예제 만들기

  • 프로젝트 생성
  • 비즈니스 요구사항과 설계
  • 회원 도메인 설계
  • 회원 도메인 개발
  • 회원 도메인 실행과 테스트
  • 주문과 할인 도메인 설계
  • 주문과 할인 도메인 개발
  • 주문과 할인 도메인 실행과 테스트

3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

  • 새로운 할인 정책 개발
  • 새로운 할인 정책 적용과 문제점
  • 관심사의 분리
  • AppConfig 리팩터링
  • 새로운 구조와 할인 정책 적용
  • 전체 흐름 정리
  • 좋은 객체 지향 설계의 5가지 원칙의 적용
  • IoC, DI, 그리고 컨테이너
  • 스프링으로 전환하기

4. 스프링 컨테이너와 스프링 빈

  • 스프링 컨테이너 생성
  • 컨테이너에 등록된 모든 빈 조회
  • 스프링 빈 조회 - 기본
  • 스프링 빈 조회 - 동일한 타입이 둘 이상
  • 스프링 빈 조회 - 상속 관계
  • BeanFactory와 ApplicationContext
  • 다양한 설정 형식 지원 - 자바 코드, XML
  • 스프링 빈 설정 메타 정보 - BeanDefinition

5. 싱글톤 컨테이너

  • 웹 애플리케이션과 싱글톤
  • 싱글톤 패턴
  • 싱글톤 컨테이너
  • 싱글톤 방식의 주의점
  • @Configuration과 싱글톤
  • @Configuration과 바이트코드 조작의 마법

6. 컴포넌트 스캔

  • 컴포넌트 스캔과 의존관계 자동 주입 시작하기
  • 탐색 위치와 기본 스캔 대상
  • 필터
  • 중복 등록과 충돌

7. 의존관계 자동 주입

  • 다양한 의존관계 주입 방법
  • 옵션 처리
  • 생성자 주입을 선택해라!
  • 롬복과 최신 트랜드
  • 조회 빈이 2개 이상 - 문제
  • @Autowired 필드 명, @Qualifier, @Primary
  • 애노테이션 직접 만들기
  • 조회한 빈이 모두 필요할 때, List, Map
  • 자동, 수동의 올바른 실무 운영 기준

8. 빈 생명주기 콜백

  • 빈 생명주기 콜백 시작
  • 인터페이스 InitializingBean, DisposableBean
  • 빈 등록 초기화, 소멸 메서드 지정
  • 애노테이션 @PostConstruct, @PreDestroy

9. 빈 스코프

  • 빈 스코프란?
  • 프로토타입 스코프
  • 프로토타입 스코프 - 싱톤 빈과 함께 사용시 문제점
  • 프로토타입 스코프 - 싱톤 빈과 함께 사용시 Provider로 문제 해결
  • 웹 스코프
  • request 스코프 예제 만들기
  • 스코프와 Provider
  • 스코프와 프록시

04. 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

1. 웹 애플리케이션 이해

  • 웹 서버, 웹 애플리케이션 서버 
  • 서블릿 
  • 동시 요청 - 멀티 쓰레드 
  • HTML, HTTP API, CSR, SSR 
  • 자바 백엔드 웹 기술 역사

2. 서블릿

  • 프로젝트 생성
  • Hello 서블릿
  • HttpServletRequest - 개요
  • HttpServletRequest - 기본 사용법
  • HTTP 요청 데이터 - 개요
  • HTTP 요청 데이터 - GET 쿼리 파라미터
  • HTTP 요청 데이터 - POST HTML Form
  • HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트
  • HTTP 요청 데이터 - API 메시지 바디 - JSON
  • HttpServletResponse - 기본 사용법
  • HTTP 응답 데이터 - 단순 텍스트, HTML
  • HTTP 응답 데이터 - API JSON
  • 정리

3. 서블릿, JSP, MVC 패턴

  • 회원 관리 웹 애플리케이션 요구사항
  • 서블릿으로 회원 관리 웹 애플리케이션 만들기
  • JSP로 회원 관리 웹 애플리케이션 만들기
  • MVC 패턴 - 개요
  • MVC 패턴 - 적용
  • MVC 패턴 - 한계
  • 정리

4. MVC 프레임워크 만들기

  • 프론트 컨트롤러 패턴 소개
  • 프론트 컨트롤러 도입 - v1
  • View 분리 - v2
  • Model 추가 - v3
  • 단순하고 실용적인 컨트롤러 - v4
  • 유연한 컨트롤러1 - v5
  • 유연한 컨트롤러2 - v5
  • 정리

5. 스프링 MVC - 구조 이해

  • 스프링 MVC 전체 구조
  • 핸들러 매핑과 핸들러 어댑터
  • 뷰 리졸버
  • 스프링 MVC - 시작하기
  • 스프링 MVC - 컨트롤러 통합
  • 스프링 MVC - 실용적인 방식
  • 정리

6. 스프링 MVC - 기본 기능

  • 프로젝트 생성
  • 로깅 간단히 알아보기
  • 요청 매핑
  • 요청 매핑 - API 예시
  • HTTP 요청 - 기본, 헤더 조회
  • HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form
  • HTTP 요청 파라미터 - @RequestParam
  • HTTP 요청 파라미터 - @ModelAttribute
  • HTTP 요청 메시지 - 단순 텍스트
  • HTTP 요청 메시지 - JSON
  • HTTP 응답 - 정적 리소스, 뷰 템플릿
  • HTTP 응답 - HTTP API, 메시지 바디에 직접 입력
  • HTTP 메시지 컨버터
  • 요청 매핑 헨들러 어뎁터 구조
  • 정리

7. 스프링 MVC  - 웹 페이지 만들기

  • 프로젝트 생성
  • 요구사항 분석
  • 상품 도메인 개발
  • 상품 서비스 HTML
  • 상품 목록 - 타임리프
  • 상품 상세
  • 상품 등록 폼
  • 상품 등록 처리 - @ModelAttribute
  • 상품 수정
  • PRG Post/Redirect/Get
  • RedirectAttributes
  • 정리

05. 스프링 MVC2

1. 타임리프 - 기본 기능

  • 프로젝트 생성
  • 타임리프 소개
  • 텍스트 - text, utext
  • 변수 - SpringEL
  • 기본 객체들
  • 유틸리티 객체와 날짜
  • URL 링크
  • 리터럴
  • 연산
  • 속성 값 설정
  • 반복
  • 조건부 평가
  • 주석
  • 블록
  • 자바스크립트 인라인
  • 템플릿 조각
  • 템플릿 레이아웃1
  • 템플릿 레이아웃2
  • 정리

2. 타임리프 - 스프링 통합과 폼

  • 프로젝트 설정
  • 타임리프 스프링 통합
  • 입력 폼 처리
  • 요구사항 추가
  • 체크 박스 - 단일1
  • 체크 박스 - 단일2
  • 체크 박스 - 멀티
  • 라디오 버튼
  • 셀렉트 박스
  • 정리

3. 메시지, 국제화

  • 프로젝트 설정
  • 메시지, 국제화 소개
  • 스프링 메시지 소스 설정
  • 스프링 메시지 소스 사용
  • 웹 애플리케이션에 메시지 적용하기
  • 웹 애플리케이션에 국제화 적용하기
  • 정리

4. 검증1 - Validation

  • 검증 요구사항
  • 프로젝트 설정 V1
  • 검증 직접 처리 - 소개
  • 검증 직접 처리 - 개발
  • 프로젝트 준비 V2
  • BindingResult1~2
  • FieldError, ObjectError
  • 오류 코드와 메시지 처리1~6
  • Validator 분리1~2
  • 정리

5. 검증2 - Bean Validation

  • Bean Validation - 소개
  • Bean Validation - 시작
  • Bean Validation - 프로젝트 준비 V3
  • Bean Validation - 스프링 적용
  • Bean Validation - 에러 코드
  • Bean Validation - 오브젝트 오류
  • Bean Validation - 수정에 적용
  • Bean Validation - 한계
  • Bean Validation - groups
  • Form 전송 객체 분리 - 프로젝트 준비 V4
  • Form 전송 객체 분리 - 소개
  • Form 전송 객체 분리 - 개발
  • Bean Validation - HTTP 메시지 컨버터
  • 정리

6. 로그인 처리1 - 쿠키, 세션

  • 로그인 요구사항
  • 프로젝트 생성
  • 홈 화면
  • 회원 가입
  • 로그인 기능
  • 로그인 처리하기 - 쿠키 사용
  • 쿠키와 보안 문제
  • 로그인 처리하기 - 세션 동작 방식
  • 로그인 처리하기 - 세션 직접 만들기
  • 로그인 처리하기 - 직접 만든 세션 적용
  • 로그인 처리하기 - 서블릿 HTTP 세션1
  • 로그인 처리하기 - 서블릿 HTTP 세션2
  • 세션 정보와 타임아웃 설정
  • 정리

7. 로그인 처리2 - 필터, 인터셉터

  • 서블릿 필터 - 소개
  • 서블릿 필터 - 요청 로그
  • 서블릿 필터 - 인증 체크
  • 스프링 인터셉터 - 소개
  • 스프링 인터셉터 - 요청 로그
  • 스프링 인터셉터 - 인증 체크
  • ArgumentResolver 활용
  • 정리

8. 예외 처리와 오류 페이지

  • 프로젝트 생성
  • 서블릿 예외 처리 - 시작
  • 서블릿 예외 처리 - 오류 화면 제공
  • 서블릿 예외 처리 - 오류 페이지 작동 원리
  • 서블릿 예외 처리 - 필터
  • 서블릿 예외 처리 - 인터셉터
  • 스프링 부트 - 오류 페이지1
  • 스프링 부트 - 오류 페이지2
  • 정리

9. API 예외 처리

  • API 예외 처리 - 시작
  • API 예외 처리 - 스프링 부트 기본 오류 처리
  • API 예외 처리 - HandlerExceptionResolver 시작
  • API 예외 처리 - HandlerExceptionResolver 활용
  • API 예외 처리 - 스프링이 제공하는 ExceptionResolver1
  • API 예외 처리 - 스프링이 제공하는 ExceptionResolver2
  • API 예외 처리 - @ExceptionHandler
  • API 예외 처리 - @ControllerAdvice
  • 정리

10. 스프링 타입 컨버터

  • 프로젝트 생성
  • 스프링 타입 컨버터 소개
  • 타입 컨버터 - Converter
  • 컨버전 서비스 - ConversionService
  • 스프링에 Converter 적용하기
  • 뷰 템플릿에 컨버터 적용하기
  • 포맷터 - Formatter
  • 포맷터를 지원하는 컨버전 서비스
  • 포맷터 적용하기
  • 스프링이 제공하는 기본 포맷터
  • 정리

11. 파일 업로드

  • 파일 업로드 소개
  • 프로젝트 생성
  • 서블릿과 파일 업로드1
  • 서블릿과 파일 업로드2
  • 스프링과 파일 업로드
  • 예제로 구현하는 파일 업로드, 다운로드
  • 정리

06. 스프링 DB 1편 - 데이터 접근 핵심 원리 v2023-11-27

1. JDBC 이해

  • 프로젝트 생성
  • H2 데이터베이스 설정
  • JDBC 이해
  • JDBC와 최신 데이터 접근 기술
  • 데이터베이스 연결
  • JDBC 개발 - 등록
  • JDBC 개발 - 조회
  • JDBC 개발 - 수정, 삭제
  • 정리

2. 커넥션풀과 데이터소스 이해

  • 커넥션 풀 이해
  • DataSource 이해
  • DataSource 예제1 - DriverManager
  • DataSource 예제2 - 커넥션 풀
  • DataSource 적용
  • 정리

3. 트랜잭션 이해

  • 트랜잭션 - 개념 이해
  • 데이터베이스 연결 구조와 DB 세션
  • 트랜잭션 - DB 예제1 - 개념 이해
  • 트랜잭션 - DB 예제2 - 자동 커밋, 수동 커밋
  • 트랜잭션 - DB 예제3 - 트랜잭션 실습
  • 트랜잭션 - DB 예제4 - 계좌이체
  • DB 락 - 개념 이해
  • DB 락 - 변경
  • DB 락 - 조회
  • 트랜잭션 - 적용1
  • 트랜잭션 - 적용2
  • 정리

4. 스프링과 문제 해결 - 트랜잭션

  • 문제점들
  • 트랜잭션 추상화
  • 트랜잭션 동기화
  • 트랜잭션 문제 해결 - 트랜잭션 매니저1
  • 트랜잭션 문제 해결 - 트랜잭션 매니저2
  • 트랜잭션 문제 해결 - 트랜잭션 템플릿
  • 트랜잭션 문제 해결 - 트랜잭션 AOP 이해
  • 트랜잭션 문제 해결 - 트랜잭션 AOP 적용
  • 트랜잭션 문제 해결 - 트랜잭션 AOP 정리
  • 스프링 부트의 자동 리소스 등록
  • 정리

5. 자바 예외 이해

  • 예외 계층
  • 예외 기본 규칙
  • 체크 예외 기본 이해
  • 언체크 예외 기본 이해
  • 체크 예외 활용
  • 언체크 예외 활용
  • 예외 포함과 스택 트레이스
  • 정리

6. 스프링과 문제 해결 - 예외 처리, 반복

  • 체크 예외와 인터페이스
  • 런타임 예외 적용
  • 데이터 접근 예외 직접 만들기
  • 스프링 예외 추상화 이해
  • 스프링 예외 추상화 적용
  • JDBC 반복 문제 해결 - JdbcTemplate
  • 정리

 


07. 스프링 DB 2편 - 데이터 접근 활용 기술

1. 데이터 접근 기술 - 시작

  • 데이터 접근 기술 진행 방식 소개
  • 프로젝트 설정과 메모리 저장소
  • 프로젝트 구조 설명1 - 기본
  • 프로젝트 구조 설명2 - 설정
  • 프로젝트 구조 설명3 - 테스트
  • 데이터베이스 테이블 생성
  • 정리

2. 데이터 접근 기술 - 스프링 JdbcTemplate

  • JdbcTemplate 소개와 설정
  • JdbcTemplate 적용1 - 기본
  • JdbcTemplate 적용2 - 동적 쿼리 문제
  • JdbcTemplate 적용3 - 구성과 실행
  • JdbcTemplate - 이름 지정 파라미터 1
  • JdbcTemplate - 이름 지정 파라미터 2
  • JdbcTemplate - 이름 지정 파라미터 3
  • JdbcTemplate - SimpleJdbcInsert
  • JdbcTemplate 기능 정리
  • 정리

3. 데이터 접근 기술 - 테스트

  • 테스트 - 데이터베이스 연동
  • 테스트 - 데이터베이스 분리
  • 테스트 - 데이터 롤백
  • 테스트 - @Transactional
  • 테스트 - 임베디드 모드 DB
  • 테스트 - 스프링 부트와 임베디드 모드
  • 정리

4. 데이터 접근 기술 - MyBatis

  • MyBatis 소개
  • MyBatis 설정
  • MyBatis 적용1 - 기본
  • /MyBatis 적용2 - 설정과 실행
  • MyBatis 적용3 - 분석
  • MyBatis 기능 정리1 - 동적 쿼리
  • MyBatis 기능 정리2 - 기타 기능
  • 정리

5. 데이터 접근 기술 - JPA

  • JPA 시작
  • ORM 개념1 - SQL 중심적인 개발의 문제점
  • ORM 개념2 - JPA 소개
  • JPA 설정
  • JPA 적용1 - 개발
  • JPA 적용2 - 리포지토리 분석
  • JPA 적용3 - 예외 변환
  • 정리

6. 데이터 접근 기술 - 스프링 데이터 JPA

  • 스프링 데이터 JPA 소개1 - 등장 이유
  • 스프링 데이터 JPA 소개2 - 기능
  • 스프링 데이터 JPA 주요 기능
  • 스프링 데이터 JPA 적용1
  • 스프링 데이터 JPA 적용2
  • 정리

7. 데이터 접근 기술 - Querydsl

  • Querydsl 소개1 - 기존 방식의 문제점
  • Querydsl 소개2 - 해결
  • Querydsl 설정
  • Querydsl 적용
  • 정리

8. 데이터 접근 기술 - 활용 방안

  • 스프링 데이터 JPA 예제와 트레이드 오프
  • 실용적인 구조
  • 다양한 데이터 접근 기술 조합
  • 정리

9. 스프링 트랜잭션 이해

  • 스프링 트랜잭션 소개
  • 프로젝트 생성
  • 트랜잭션 적용 확인
  • 트랜잭션 적용 위치]
  • 트랜잭션 AOP 주의 사항 - 프록시 내부 호출1
  • 트랜잭션 AOP 주의 사항 - 프록시 내부 호출2
  • 트랜잭션 AOP 주의 사항 - 초기화 시점
  • 트랜잭션 옵션 소개
  • 예외와 트랜잭션 커밋, 롤백 - 기본
  • 예외와 트랜잭션 커밋, 롤백 - 활용
  • 정리

10. 스프링 트랜잭션 전파1 - 기본

  • 스프링 트랜잭션 전파1 - 커밋, 롤백
  • 스프링 트랜잭션 전파2 - 트랜잭션 두 번 사용
  • 스프링 트랜잭션 전파3 - 전파 기본
  • 스프링 트랜잭션 전파4 - 전파 예제
  • 스프링 트랜잭션 전파5 - 외부 롤백
  • 스프링 트랜잭션 전파6 - 내부 롤백
  • 스프링 트랜잭션 전파7 - REQUIRES_NEW
  • 스프링 트랜잭션 전파8 - 다양한 전파 옵션
  • 정리

11. 스프링 트랜잭션 전파2 - 활용

  • 트랜잭션 전파 활용1 - 예제 프로젝트 시작
  • 트랜잭션 전파 활용2 - 커밋, 롤백
  • 트랜잭션 전파 활용3 - 단일 트랜잭션
  • 트랜잭션 전파 활용4 - 전파 커밋
  • 트랜잭션 전파 활용5 - 전파 롤백
  • 트랜잭션 전파 활용6 - 복구 REQUIRED
  • 트랜잭션 전파 활용7 - 복구 REQUIRES_NEW
  • 정리

08. 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 v2023-12-04

1. 프로젝트 환경설정

  • 프로젝트 생성
  • 라이브러리 살펴보기
  • View 환경 설정
  • H2 데이터베이스 설치
  • JPA와 DB 설정, 동작확인

2. 도메인 분석 설계

  • 요구사항 분석
  • 도메인 모델과 테이블 설계
  • 엔티티 클래스 개발
  • 엔티티 설계시 주의점

3. 애플리케이션 구현 준비

  • 구현 요구사항
  • 애플리케이션 아키텍처

4. 회원 도메인 개발

  • 회원 리포지토리 개발
  • 회원 서비스 개발
  • 회원 기능 테스트

5. 상품 도메인 개발

  • 상품 엔티티 개발(비즈니스 로직 추가)
  • 상품 리포지토리 개발
  • 상품 서비스 개발

6. 주문 도메인 개발

  • 주문, 주문상품 엔티티 개발
  • 주문 리포지토리 개발
  • 주문 서비스 개발
  • 주문 기능 테스트
  • 주문 검색 기능 개발

7. 웹 계층 개발

  • 홈 화면과 레이아웃
  • 회원 등록
  • 회원 목록 조회
  • 상품 등록
  • 상품 목록
  • 상품 수정
  • 변경 감지와 병합(merge)
  • 상품 주문
  • 주문 목록 검색, 취소

09. JPA

1. JPA 소개

2. JPA 시작

3. 영속성 관리

4. 엔티티 매핑

5. 연관관계 매핑 기초

6. 다양한 연관관계 매핑

7. 고급 매핑

8. 프록시와 연관관계 정리

9. 값 타입

10. 객체지향 쿼리 언어


10. 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 v2023-11-27

1. API 개발 기본

  • 회원 등록 API
  • 회원 수정 API
  • 회원 조회 API

2. API 개발 고급 - 준비

  • 소개
  • 조회용 샘플 데이터 입력

3. API 개발 고급 - 지연 로딩과 조회 성능 최적화

  • 간단한 주문 조회 V1: 엔티티를 직접 노출
  • 간단한 주문 조회 V2: 엔티티를 DTO로 변환
  • 간단한 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화
  • 간단한 주문 조회 V4: JPA에서 DTO로 바로 조회

4. API 개발 고급 - 컬렉션 조회 최적화

  • 주문 조회 V1: 엔티티 직접 노출
  • 주문 조회 V2: 엔티티를 DTO로 변환
  • 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화
  • 주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파
  • 페이징과 한계 돌파
  • 주문 조회 V4: JPA에서 DTO 직접 조회
  • 주문 조회 V5: JPA에서 DTO 직접 조회 - 컬렉션 조회 최적화
  • 주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화
  • API 개발 고급 정리

5. API 개발 고급 - 실무 필수 최적화

  • OSIV와 성능 최적화

11. 실전! 스프링 데이터 JPA

1. 프로젝트 환경설정

  • 프로젝트 생성
  • 라이브러리 살펴보기
  • H2 데이터베이스 설치
  • 스프링 데이터 JPA와 DB 설정, 동작확인

2. 예제 도메인 모델

  • 예제 도메인 모델과 동작확인

3. 공통 인터페이스 기능

  • 순수 JPA 기반 리포지토리 만들기
  • 공통 인터페이스 설정
  • 공통 인터페이스 적용
  • 공통 인터페이스 분석

4. 쿼리 메소드 기능

  • 메소드 이름으로 쿼리 생성
  • JPA NamedQuery
  • @Query, 리포지토리 메소드에 쿼리 정의하기
  • @Query, 값, DTO 조회하기
  • 파라미터 바인딩
  • 반환 타입
  • 순수 JPA 페이징과 정렬
  • 스프링 데이터 JPA 페이징과 정렬
  • 벌크성 수정 쿼리
  • @EntityGraph
  • JPA Hint & Lock

5. 확장 기능

  • 사용자 정의 리포지토리 구현
  • Auditing
  • Web 확장 - 도메인 클래스 컨버터
  • Web 확장 - 페이징과 정렬

6. 스프링 데이터 JPA 분석

  • 스프링 데이터 JPA 구현체 분석
  • 새로운 엔티티를 구별하는 방법

7. 나머지 기능들

  • Specifications (명세)
  • Query By Example
  • Projections
  • 네이티브 쿼리

 


12. 실전! Querydsl

1. 프로젝트 환경설정

  • 프로젝트 생성
  • Querydsl 설정과 검증
  • 라이브러리 살펴보기
  • H2 데이터베이스 설치
  • 스프링 부트 설정 - JPA, DB

2. 예제 도메인 모델

  • 예제 도메인 모델과 동작확인

3. 기본 문법

  • 시작 - JPQL vs Querydsl
  • 기본 Q-Type 활용
  • 검색 조건 쿼리
  • 결과 조회
  • 정렬
  • 페이징
  • 집합
  • 조인 - 기본 조인
  • 조인 - on절
  • 조인 - 페치 조인
  • 서브 쿼리
  • Case 문
  • 상수, 문자 더하기

4. 중급 문법

  • 프로젝션과 결과 반환 - 기본
  • 프로젝션과 결과 반환 - DTO 조회
  • 프로젝션과 결과 반환 - @QueryProjection
  • 동적 쿼리 - BooleanBuilder 사용
  • 동적 쿼리 - Where 다중 파라미터 사용
  • 수정, 삭제 벌크 연산
  • SQL function 호출하기

5. 실무 활용 - 순수 JPA와 Querydsl

  • 순수 JPA 리포지토리와 Querydsl
  • 동적 쿼리와 성능 최적화 조회 - Builder 사용
  • 동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용
  • 조회 API 컨트롤러 개발

6. 실무 활용 - 스프링 데이터 JPA와 Querydsl

  • 스프링 데이터 JPA 리포지토리로 변경
  • 사용자 정의 리포지토리
  • 스프링 데이터 페이징 활용1 - Querydsl 페이징 연동
  • 스프링 데이터 페이징 활용2 - CountQuery 최적화
  • 스프링 데이터 페이징 활용3 - 컨트롤러 개발

7. 스프링 데이터 JPA가 제공하는 Querydsl 기능

  • 인터페이스 지원 - QuerydslPredicateExecuto
  • Querydsl Web 지원
  • 리포지토리 지원 - QuerydslRepositorySupport
  • Querydsl 지원 클래스 직접 만들기

8. 스프링 부트 3.x(2.6 이상), Querydsl 5.0 지원 방법

  • build.gradle 설정 방법
  • PageableExecutionUtils Deprecated(향후 미지원) 패키지 변경
  • Querydsl fetchResults(), fetchCount() Deprecated(향후 미지원)

13. 스프링 부트

1. 스프링 부트 소개

  • 스프링 프레임워크의 등장
  • 스프링 부트의 등장

2. 웹 서버와 서블릿 컨테이너

  • 웹 서버와 스프링 부트 소개
  • 톰캣 설치
  • 프로젝트 설정
  • WAR 빌드와 배포
  • 톰캣 설정 - 인텔리J 유료 버전
  • 톰캣 설정 - 인텔리J 무료 버전
  • 서블릿 컨테이너 초기화1
  • 서블릿 컨테이너 초기화2
  • 스프링 컨테이너 등록
  • 스프링 MVC 서블릿 컨테이너 초기화 지원
  • 정리

3. 스프링 부트와 내장 톰캣

  • WAR 배포 방식의 단점
  • 내장 톰캣1 - 설정
  • 내장 톰캣2 - 서블릿
  • 내장 톰캣3 - 스프링
  • 내장 톰캣4 - 빌드와 배포1
  • 내장 톰캣5 - 빌드와 배포2
  • 편리한 부트 클래스 만들기
  • 스프링 부트와 웹 서버 - 프로젝트 생성
  • 스프링 부트와 웹 서버 - 실행 과정
  • 스프링 부트와 웹 서버 - 빌드와 배포
  • 스프링 부트 실행 가능 Jar
  • 정리

4. 스프링 부트 스타터와 라이브러리 관리

  • 라이브러리 직접 관리
  • 스프링 부트 라이브러리 버전 관리
  • 스프링 부트 스타터
  • 정리

5. 자동 설정(Auto Configuration)

  • 프로젝트 설정
  • 예제 만들기
  • 자동 구성 확인
  • 스프링 부트의 자동 구성
  • 자동 구성 직접 만들기 - 기반 예제
  • @Conditional
  • @Conditional - 다양한 기능
  • 순수 라이브러리 만들기
  • 순수 라이브러리 사용하기1
  • 순수 라이브러리 사용하기2
  • 자동 구성 라이브러리 만들기
  • 자동 구성 라이브러리 사용하기1
  • 자동 구성 라이브러리 사용하기2
  • 자동 구성 이해1 - 스프링 부트의 동작
  • 자동 구성 이해2 - ImportSelector 
  • 정리

6. 외부설정과 프로필1

  • 프로젝트 설정
  • 외부 설정이란?
  • 외부 설정 - OS 환경 변수
  • 외부 설정 - 자바 시스템 속성
  • 외부 설정 - 커맨드 라인 인수
  • 외부 설정 - 커맨드 라인 옵션 인수
  • 외부 설정 - 커맨드 라인 옵션 인수와 스프링 부트
  • 외부 설정 - 스프링 통합
  • 설정 데이터1 - 외부 파일
  • 설정 데이터2 - 내부 파일 분리
  • 설정 데이터3 - 내부 파일 합체
  • 우선순위 - 설정 데이터
  • 우선순위 - 전체
  • 정리

7. 외부설정과 프로필2

  • 프로젝트 설정
  • 외부 설정 사용 - Environment
  • 외부설정 사용 - @Value
  • 외부설정 사용 - @ConfigurationProperties 시작
  • 외부설정 사용 - @ConfigurationProperties 생성자
  • 외부설정 사용 - @ConfigurationProperties 검증
  • /YAML
  • @Profile
  • 정리

8. 액츄에이터

  • 프로덕션 준비 기능이란?
  • 프로젝트 설정
  • 액츄에이터 시작
  • 엔드포인트 설정
  • 다양한 엔드포인트
  • 헬스 정보
  • 애플리케이션 정보
  • 로거
  • HTTP 요청 응답 기록
  • 액츄에이터와 보안
  • 정리

9. 마이크로미터, 프로메테우스, 그라파나

  • 마이크로미터 소개
  • 메트릭 확인하기
  • 다양한 메트릭
  • 프로메테우스와 그라파나 소개
  • 프로메테우스 - 설치
  • 프로메테우스 - 애플리케이션 설정
  • 프로메테우스 - 수집 설정
  • 프로메테우스 - 기본 기능
  • 프로메테우스 - 게이지와 카운터
  • 그라파나 - 설치
  • 그라파나 - 연동
  • 그라파나 - 대시보드 만들기
  • 그라파나 - 공유 대시보드 활용
  • 그라파나 - 메트릭을 통한 문제 확인
  • 정리

10. 모니터링 메트릭 활용

  • 메트릭 등록 - 예제 만들기
  • 메트릭 등록1 - 카운터
  • 메트릭 등록2 - @Counted 
  • 메트릭 등록3 - Timer
  • 메트릭 등록4 - @Timed 
  • 메트릭 등록5 - 게이지
  • 정리
  • 실무 모니터링 환경 구성 팁

14. 스프링 핵심 원리 - 고급편 전체 목차 v2023-11-27

1. 예제 만들기

  • 프로젝트 생성
  • 예제 프로젝트 만들기 - V0
  • 로그 추적기 - 요구사항 분석
  • 로그 추적기 V1 - 프로토타입 개발
  • 로그 추적기 V1 - 적용
  • 로그 추적기 V2 - 파라미터로 동기화 개발
  • 로그 추적기 V2 - 적용
  • 정리

2. 쓰레드 로컬 - ThreadLocal

  • 필드 동기화 - 개발
  • 필드 동기화 - 적용
  • 필드 동기화 - 동시성 문제
  • 동시성 문제 - 예제 코드
  • ThreadLocal - 소개
  • ThreadLocal - 예제 코드
  • 쓰레드 로컬 동기화 - 개발
  • 쓰레드 로컬 동기화 - 적용
  • 쓰레드 로컬 - 주의사항
  • 정리

3. 템플릿 메서드 패턴과 콜백 패턴

  • 템플릿 메서드 패턴 - 시작
  • 템플릿 메서드 패턴 - 예제1~3
  • 템플릿 메서드 패턴 - 적용1~2
  • 템플릿 메서드 패턴 - 정의
  • 전략 패턴 - 시작
  • 전략 패턴 - 예제1~3
  • 템플릿 콜백 패턴 - 시작
  • 템플릿 콜백 패턴 - 예제
  • 템플릿 콜백 패턴 - 적용
  • 정리

4. 프록시 패턴과 데코레이터 패턴

  • 프로젝트 생성
  • 예제 프로젝트 만들기 v1 ~ v3
  • 요구사항 추가
  • 프록시, 프록시 패턴, 데코레이터 패턴 - 소개
  • 프록시 패턴 - 예제 코드1~2
  • 데코레이터 패턴 - 예제 코드1~3
  • 프록시 패턴과 데코레이터 패턴 정리
  • 인터페이스 기반 프록시 - 적용
  • 구체 클래스 기반 프록시 - 예제1~2
  • 구체 클래스 기반 프록시 - 적용
  • 인터페이스 기반 프록시와 클래스 기반 프록시
  • 정리

5. 동적 프록시 기술

  • 리플렉션
  • JDK 동적 프록시 - 소개
  • JDK 동적 프록시 - 예제 코드
  • JDK 동적 프록시 - 적용1
  • JDK 동적 프록시 - 적용2
  • CGLIB - 소개
  • CGLIB - 예제 코드
  • 정리

6. 스프링이 지원하는 프록시

  • 프록시 팩토리 - 소개]
  • 프록시 팩토리 - 예제 코드1~2
  • 포인트컷, 어드바이스, 어드바이저 - 소개
  • 예제 코드1 - 어드바이저
  • 예제 코드2 - 직접 만든 포인트컷
  • 예제 코드3 - 스프링이 제공하는 포인트컷
  • 예제 코드4 - 여러 어드바이저 함께 적용
  • 프록시 팩토리 - 적용1~2
  • 정리

7. 빈 후처리기

  • 빈 후처리기 - 소개
  • 빈 후처리기 - 예제 코드1~2
  • 빈 후처리기 - 적용
  • 빈 후처리기 - 정리
  • 스프링이 제공하는 빈 후처리기1~2
  • 하나의 프록시, 여러 Advisor 적용
  • 정리

8. @Aspect AOP

  • @Aspect 프록시 - 적용
  • @Aspect 프록시 - 설명
  • 정리

9. 스프링 AOP 개념

  • AOP 소개 - 핵심 기능과 부가 기능
  • AOP 소개 - 애스펙트
  • AOP 적용 방식
  • AOP 용어 정리
  • 정리

10. 스프링 AOP 구현

  • 프로젝트 생성
  • 예제 프로젝트 만들기
  • 스프링 AOP 구현1 - 시작
  • 스프링 AOP 구현2 - 포인트컷 분리
  • 스프링 AOP 구현3 - 어드바이스 추가
  • 스프링 AOP 구현4 - 포인트컷 참조
  • 스프링 AOP 구현5 - 어드바이스 순서
  • 스프링 AOP 구현6 - 어드바이스 종류
  • 정리

11. 스프링 AOP - 포인트컷

  • 포인트컷 지시자
  • 예제 만들기
  • execution1, 2
  • within
  • args
  • @target, @within
  • @annotation, @args
  • bean
  • 매개변수 전달
  • this, target
  • 정리

12. 스프링 AOP - 실전 예제

  • 예제 만들기
  • 로그 출력 AOP
  • 재시도 AOP
  • 정리

13. 스프링 AOP - 실무 주의사항

  • 프록시와 내부 호출 - 문제
  • 프록시와 내부 호출 - 대안1 자기 자신 주입
  • 프록시와 내부 호출 - 대안2 지연 조회
  • 프록시와 내부 호출 - 대안3 구조 변경
  • 프록시 기술과 한계 - 타입 캐스팅
  • 프록시 기술과 한계 - 의존관계 주입
  • 프록시 기술과 한계 - CGLIB
  • 프록시 기술과 한계 - 스프링의 해결책
  • 정리
반응형