Spring boot 60

JWT - 서비스의 인증과 권한 부여

JWTJWT는 JSON Web Token의 약자로, 두 시스템 간의 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식이다. 예를 들어, 클라이언트와 서버 간의 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 활용한다. JWT는 JSON 형태로 데이터를 저장하며, 그 데이터는 서명(약간의 암호화)되어 안전하게 교환된다. JWT의 구조JWT는 세 부분으로 구성된다.Header (헤더) : 토큰의 타입과 해싱 알고리즘 정보를 담고 있다. 보통 'alg' (알고리즘)와 'typ' (타입)이라는 두 가지 속성이 포함되며, 예를 들어, {"alg" : "HS256", "typ" : "JWT"} 형태이다.Payload (페이로드) : 주로 사용자 정보나 데이터(claims)를 포함하는 부분이다. 여기..

Spring boot 2024.11.04

API 설계 및 모범 사례

jar 파일 다운로드https://drive.usercontent.google.com/download?id=1Z1m6Zg17aCRwTe7StBCONFlwa5-54vev&export=download&authuser=0 API 명세https://blog.naver.com/devnote1/222613178127 스프링부트 JWT 블로그 가상 서버 셋팅하기jar 파일 다운로드 https://drive.google.com/file/d/1Z1m6Zg17aCRwTe7StBCONFlwa5-54vev/view?...blog.naver.com 실습 및 문제 해결(JWT 웹 토큰의 필요성 확인){ "code": 1, "msg": "목록보기완료", "data": [ { "id": 2, "usern..

Spring boot 2024.11.04

블로그 - 에러 페이지 만들기

스프링 부트의 에러 처리 메커니즘 이해 : 스프링 부트에서 제공하는 기본 에러 처리 방식과 커스터마이징 방법을 이해한다.Mustache 템플릿을 활용한 에러 페이지 구현 : 다양한 HTTP 상태 코드에 맞는 사용자 정의 에러 페이지를 Mustache 템플릿을 사용하여 구현한다. 스프링 부트는 기본적으로 BasicErrorController를 통해 애플리케이션에서 발생하는 에러를 처리한다. 이 컨트롤러는 /error 경로로 모든 에러를 매핑하며, 에러 발생 시 적절한 에러 페이지를 렌더링한다. 그러나 기본 제공되는 에러 페이지는 단순한 텍스트 형태로 제공되기 때문에, 추가적인 가공 작업이 필요 하다.  에러 페이지 매핑 설정 스프링 부트는 기본적으로 /error 경로를 통해 에러를 처리한다. applica..

Spring boot 2024.10.25

블로그 - 게시글 수정

BoardController - 게시글 수정하기 화면 요청// 게시글 수정 화면 요청 // board/{id}/update @GetMapping("/board/{id}/update-form") public String updateForm(@PathVariable(name = "id") Integer id, HttpServletRequest request) { // 1. 게시글 조회 Board board = boardNativeRepository.findById(id); // 2. 요청 속성에 조회한 게시글 속성 및 값 추가 request.setAttribute("board", board); // 뷰 리졸브 - 템플릿 반환 ..

Spring boot 2024.10.24

블로그 - 게시글 삭제

BoardRepository에서 게시글 삭제 쿼리를 만들어 보자. - JPA API, JPQL 객체 지향 쿼리 작성(삭제 권한)package com.tenco.blog_v1.board;import jakarta.persistence.EntityManager;import jakarta.persistence.Query;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import java.util.List;@RequiredA..

Spring boot 2024.10.23

블로그 - 게시글 쓰기

JPA를 활용하여 게시글 작성기능을 구현하는 방법을 학습한다. 이 과정에서는 데이터 저장, DTO 사용, 컨트롤러 구현등을 다루며, ORM의 영속성 관리에 대한 이해를 심화한다. BoardRepository save 메서드 구현목표 : Board 엔티티를 데이터베이스에 저장하는 save 메서드를 구현한다. BoardRepository 코드 추가 @Transactional public Board save(Board board) { em.persist(board); // 비영속 상태인 엔티티를 영속 상태로 전환시킨다. return board; } BoardDTOpackage com.tenco.blog_v1.board;import com.tenco.blog_v1.user.U..

Spring boot 2024.10.23

블로그 - 로그인&로그아웃 구현

Spring Boot와 JPA를 사용하여 로그인 및 로그아웃 기능을 구현할 수 있다. 로그인 쿼리 만들기먼저, UserRepository를 통해 사용자 이름과 비밀번호로 사용자를 조회하는 메서드를 만든다. 이 메서드는 JPQL을 사용하여 데이터베이스에서 사용자를 검색한다.package com.tenco.blog_v1.user;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;@RequiredArgsConstructor@Repositorypublic class U..

Spring boot 2024.10.23

블로그 - 게시글 목록보기 (Post List View)

JPA에서의 게시글 목록 조회 방법 학습N+1 문제와 해결 방법 학습 - 지연 로딩으로 인한 N+1 문제를 확인하고 해결 방법을 학습한다.배치 사이즈(Batch Size) 설정 이해 - default_batch_fetch_size를 설정하여 성능을 최적화하는 방법을 학습한다.게시글 목록보기 컨트롤러 및 뷰 구현 - 실제로 게시글 목록을 표시하는 컨트롤러와 화면을 작성한다. 게시글 목록보기 쿼리 작성 (Eager Fetching): EAGER 페치 전략을 사용하여 게시글 목록을 조회하고, 연관된 User 엔티티가 어떻게 로딩되는지 확인한다.package com.tenco.blog_v1.board;import jakarta.persistence.EntityManager;import jakarta.persis..

Spring boot 2024.10.23