Skip to content

pearl-jam/springboot-become-backend-development

Repository files navigation

스프링 부트 3 백엔드 개발자 되기 - 자바 편 : JPA + OAuth2 + JWT + AWS 와 배우는 스프링 부트 3 자바 백엔드 입문자를 위한 풀 패키지

학습 목표

스프링 부트 3가 어떤 구조인지, 그리고 어떤 과정을 통해 실행되는지 코드와 함께 살펴봅니다.
여기를 공부하면 스프링 부트 3가 어떤 구조로 이루어져 있고, 앞으로 프로젝트를 진행할 때 어떤 구조로 진행해야 하는지에 대한 감을 잡을 수 있을 겁니다.

핵심 키워드

프레젠테이션 계증
비지니스 계층
퍼시스턴스 계층

학습 코스

1. 스프링 부트 3 구조 살펴보기
2. 스프링 부트 3 프로젝트 발전시키기
3. 스프링 부트 요청-응답 과정 한 방에 이해하기

핵심 요약

스프링 부트 프로젝트의 계층

  1. 프레젠테이션 계층은 HTTP 요청을 받고 비즈니스 계층으로 전송
  2. 비즈니스 계층은 모든 비즈니스 로직을 처리하며 퍼시스턴스 계층에서 제공하는 서비스를 사용할 수도 있고, 권한을 부여하거나 유효성 검사를 진행
  3. 퍼시스턴스 계층은 모든 스토리지 관련 로직을 처리하며 이 과정에서 데이터베이스에 접근하기 위한 객체인 DAO 를 사용

학습 목표

스프링 부트 3에서 테스트 코드를 어떻게 작성하는지 알아보고 실습을 하며 이해합니다.

핵심 키워드

Junit
AssertJ
@Test
given-when-then

학습 코스

1. 테스트 코드 개념 익히기
2. 스프링 부트 3와 테스트
3. 제대로 테스트 코드 작성해보기

핵심 요약

테스트 코드가 무엇인지를 알아보고 Junit 을 사용해서 스프링 부트에서 테스트 코드를 작성

  1. 테스트 코드를 작성하면 코드의 기능이 제대로 작동한다는 것을 검증할수 있으며 테스트 코드는 보통 테스트를 준비하는 given, 테스트를 실제로 진행하는 when, 텟트 결과를 검증하는 then 으로 구분
  2. JUnit 은 단위 테스트를 할 때 사용하는 자바 테스트 프레임워크이며 @BeforeAll 애너테이션으로 설정한 메서드가 실행되고, 그 이후에는 테스트 케이스 개수만큼 @BeforeEach -> @Test -> @AfterEach 의 생명주기를 가지고 실행. 모든 테스트가 완료되면 마지막으로 @AfterAll 애너테이션으로 설정한 메서드가 실행되고 종료
  3. AssertJ 는 JUnit 과 함께 사용해 검증문의 가독성을 높여주는 라이브러리

학습 목표

SQL 을 몰라도 데이터베이스를 조작할 수 있게 해주는 편리한 도구인 ORM 을 학습
스프링 부트의 ORM 기술 표준인 스프링 JPA 와 이를 구현하기 위한 하이버네트를 사용

핵심 키워드

DBMS
ORM
JPA
하이버네이트
엔티티
영속성 컨텍스트
스프링 데이터 JPA

학습 코스

데이터베이스와 ORM 의 개념을 알아보고 나서 자바의 ORM 기술 표준인 JPA 와 이를 구현하기 위한 하이버네이트 학습

1. 데이터베이스란?
2. ORM 이란?
3. JPA 와 하이버네이트?
4. 스프링 데이터와 스프링 데이터 JPA
5. 예제 코드 살펴보기

핵심 요약

1. ORM 은 객체와 데이터베이스를 연결하는 프로그래밍 기법
2. JPA 는 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
    - 엔티티는 영속성을 가진 객체를 의미
    - 엔티티 매니저는 엔티티를 관리하며 조회, 삭제, 수정, 생성하는 역할 수행
    - 엔티티 매니저를 만드는 곳이 엔티티 매니저 팩토리
    - 엔티티 매니저는 엔티티를 영속성 컨텍스트에 저장한다는 특징
    - 영속성 컨텍스트는 1차 캐시, 쓰기 지연, 변경 감지, 지연 로딩의 특징
    - 엔티티의 상태는 분리, 관리, 비영속, 삭제 상태로 구분
3. 하이버네이트는 JPA 의 구현체 중 대표적인 구현체로, 자바 언어를 위한 ORM 프레임워크
4. 스프링 데이터 JPA 는 JPA 를 쓰기 편하게 만들어 놓은 모듈

학습 목표

블로그 글을 만들고(create), 조회하고(read), 업데이트하고(update), 삭제하는(delete) RESTful API를 만들고 스프링 부트 3와 JPA를 어떻게 사용하는지 학습

핵심 키워드

REST API
CRUD
테스트 코드
롬복

학습 코스

1. 사전 지식: API와 RESTful API
2. 블로그 개발을 위한 엔티티 구성하기
3. 블로그 글 작성을 위한 API 구현하기
4. 블로그 글 목록 조회를 위한 API 구현하기
5. 블로그 글 조회 API 구현하기
6. 블로그 글 삭제 API 구현하기
7. 블로그 글 수정 API 구현하기

핵심 요약

1. REST API 는 웹의 장점을 최대한 활용하는 API로,자원을 이름으로 구분해 지원의 상태를 주고받는 방식
2. JpaRepository 를 상속받으면 Spring Data JPA 에서 지원하는 여러 메서드를 간편하게 사용
3. 롬복을 사용하면 더 깔끔하게 코드를 작성
4. 테스트 코드를 작성하면 코드의 기능이 제대로 작동한다는 것을 검증

학습 목표

스프링 부트에서 제공하는 템플릿 엔진인 타임리프를 사용해서 블로그 화면을 개발
글 목록을 볼 수 있는 화면, 글 내용을 확인할 수 있는 상세 화면,수정이나 생성할 수 있는 수정 화면으로 구성

핵심 키워드

템플릿 엔진
타임리프
모델

학습 코스

1. 사전 지식: 타임리프
2. 블로그 글 목록 뷰 구현하기
3. 블로그 글 구현하기
4. 삭제 기능 추가하기
5. 수정/생성 기능 추가하기
6. 생성 기능 마무리하기

핵심 요약

1. @Controller 는 반환값으로 뷰를 찾아 보여주는 애너테이션
2. 템플릿 엔진은 데이터를 넘겨받아 HTML 에 데이터를 넣어 동적인 웹페이지를 만들어주는 도구
3. 타임리프는 스프링의 대표적인 템플릿 엔진이며 컨트롤러에서 모델을 통해 데이터를 설정하면, 모델은 뷰에서 사용할 수 있게 데이터 전달

학습 목표

스프링 기반의 애플리케이션의 보안(인증, 인가)을 담당하는 스프링 하위 프레임워크인 스프링 시큐리티를 사용해서 회원 가입, 로그인, 로그아웃 기능 구현

핵심 키워드

인증
인가
스프링 시큐리티
SecirutyFilterChain
UserDetails

학습 코스

1. 사전 지식: 스프링 시큐리티
2. 회원 도메인 만들기
3. 시큐리티 설정하기
4. 회원 가입 구현하기
5. 회원 가입, 로그인 뷰 작성하기
6. 로그아웃 구현하기
7. 실행 테스트하기

핵심 요약

1. 인증은 보호된 리소스에 접근하는 것을 허용하기 이전에 등록된 사용자의 신원을 입증하는 과정
2. 인가는 특정 부분에 접근할 수 있는지에 확인하는 작업
3. 스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증, 인가, 권한)을 담당하는 스프링 하위 프레임워크이며, 필터 기반으로 동작
    각 필터에서 인증 인가와 관련된 작업을 처리하며, 기본적으로 세션 & 쿠키방식으로 인증 처리

학습 목표

토큰 기반 인증과 JWT, 리프레시 토큰의 개념을 이해하고 토큰 기반 인증인 JWT 토큰 서비스를 구현하고 적용

핵심 키워드

토큰 기반 인증
JWT
리프레시 토큰
필터

학습 코스

1. 사전 지식: 토큰 기반 인증
2. JWT 서비스 구현하기
3. 토큰 API 구현하기

About

스프링 부트 3 백엔드 개발자 되기

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published