본문 바로가기

Spring16

[Spring] REST Docs 🔎REST Docs란? Test 코드 기반으로 Restful API 서비스를 문서화를 도움 Asciidoctor를 사용하며, 이를 이용해 html을 생성 큰 장점은 테스트 코드를 기반으로 문서를 작성한다는 점 테스트 통과시 Snippet이 생성됨 만약 테스트 실패 시, Snippet이 생성되지 않음 💡REST Docs VS Swagger REST Docs Swagger 장점 테스트에 성공해야 문서 작성 가능 API 를 테스트 해 볼수 있는 화면을 제공 제품 코드에 영향이 없음 테스트 코드가 필요 없으므로 적용하기 쉬움 단점 테스트 코드를 작성해야 하므로 적용이 불편 제품 코드에 어노테이션 추가해야 함 테스트 기반이 아니기 때문에 100% 정확하지 않을 수 있음 Swagger 사용 시, 제품 코드에 어노테.. 2023. 1. 4.
[Spring] 로그인 구현 번외 - 소셜 로그인 시 권한 부여 메인 프로젝트를 하면서 REST API로 카카오 로그인을 구현해보았다. 해당 부분을 기억하기 위해 이 글을 작성하였다. 이 포스팅은 프로젝트 과정에서 흐름을 기억하기 위해 작성한 것으로, 기본 흐름의 틀정도라고 생각하면 좋을 듯 하다. 해당 포스팅의 코드는 아래의 깃헙 주소에서도 확인 가능. ❗️본 포스팅은 이전 포스팅에서 이어집니다❗️ GitHub - Bhinney/Study: ✨ 공부하면서 기록하는 공간 ✨ ✨ 공부하면서 기록하는 공간 ✨. Contribute to Bhinney/Study development by creating an account on GitHub. github.com ✨ 들어가기 전에 왜 권한 수정이 로그인에 같이 포스팅 하는지✨ : 메인 프로젝트 서버는 생산자와 소비자가 나뉘.. 2022. 12. 20.
[Spring] 로그인 구현 3 - 카카오 로그인 구현 메인 프로젝트를 하면서 REST API로 카카오 로그인을 구현해보았다. 해당 부분을 기억하기 위해 이 글을 작성하였다. 이 포스팅은 프로젝트 과정에서 흐름을 기억하기 위해 작성한 것으로, 기본 흐름의 틀정도라고 생각하면 좋을 듯 하다. 해당 포스팅의 코드는 아래의 깃헙 주소에서도 확인 가능. ❗️본 포스팅은 이전 포스팅에서 이어집니다❗️ GitHub - Bhinney/Study: ✨ 공부하면서 기록하는 공간 ✨ ✨ 공부하면서 기록하는 공간 ✨. Contribute to Bhinney/Study development by creating an account on GitHub. github.com ✨ 들어가기 전에, 메인 프로젝트에서 사용한 카카오 로그인의 흐름 ✨ : 아래의 흐름을 바탕으로 프로젝트의 코드.. 2022. 12. 20.
[Spring] 로그인 구현 2 - 회원 가입 & 자체 로그인 구현 메인 프로젝트를 하면서 REST API로 로그인을 구현해보았다. 해당 부분을 기억하기 위해 이 글을 작성하였다. 이 포스팅은 프로젝트 과정에서 흐름을 기억하기 위해 작성한 것으로, 기본 흐름의 틀정도라고 생각하면 좋을 듯 하다. 해당 포스팅의 코드는 아래의 깃헙 주소에서도 확인 가능. GitHub - Bhinney/Study: ✨ 공부하면서 기록하는 공간 ✨ ✨ 공부하면서 기록하는 공간 ✨. Contribute to Bhinney/Study development by creating an account on GitHub. github.com ✨ 들어가기 전에, 메인 프로젝트에서 로그인 구현의 흐름 ✨ : 아래의 흐름을 바탕으로 + Redis를 이용하여 구현 1️⃣ build.gradle 설정 JWT 토큰.. 2022. 12. 20.
[Spring] 로그인 구현 1 - 회원 엔티티, Mapper, Repository 구현 메인 프로젝트를 하면서 REST API로 로그인을 구현해보았다. 해당 부분을 기억하기 위해 이 글을 작성하였다. 이 포스팅은 프로젝트 과정에서 흐름을 기억하기 위해 작성한 것으로, 기본 흐름의 틀정도라고 생각하면 좋을 듯 하다. 해당 포스팅의 코드는 아래의 깃헙 주소에서도 확인 가능. GitHub - Bhinney/Study: ✨ 공부하면서 기록하는 공간 ✨ ✨ 공부하면서 기록하는 공간 ✨. Contribute to Bhinney/Study development by creating an account on GitHub. github.com 로그인 구현인데 회원 로직 구현인 이유? : 회원 기본 로직이 구현 되어야 로그인 구현이 가능하기 때문 1️⃣ 공통의 Member 엔티티 구현 공통의 회원 클래스인 .. 2022. 12. 20.
[Spring] Transaction Transaction 이란? Transaction 이란, 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이며, 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위이고, 하나의 트랜잭션은 Commit되거나 Rollback이 이루어진다. Transaction은 ACID의 원칙을 따른다. A는 Atomicity로 원자성을 뜻한다. 트랜잭션에서의 원자성이란, 작업을 더이상 쪼갤 수 없음을 의미한다. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 트랜잭션 .. 2022. 12. 19.
[Spring] JDBC와 Spring JDBC, Spring Data JDBC, Spring Data JPA 면접 준비를 하며, 각 개념에 대해 차이를 알고자 공부하였다. 정확하지 않을 수 있다. 📌 JDBC JDBC란? Java DataBase Connectivity Java 기반 애플리케이션의 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장 및 업데이트 하거나 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 표준 API Java 프로그램이 데이터 베이스와 연결되어 데이터를 주고 받을 수 있게 하는 프로그래밍 인터페이스 JDBC는 DBMS에 종속되지 않는 관련 API를 제공 JDBC API는 JDK에서 제공 프로그래밍을 위해서는 JDBC 드라이버가 필요 동작 원리 사용할 JDBC 드라이버 선정 → 커넥션 생성 → 질의(Query)를 excuteSQL에 삽.. 2022. 12. 17.
[Spring] Spring boot Java 카카오 페이 단건 결제 구현하기 메인 프로젝트를 하면서 카카오 API를 이용하여 카카오 페이를 구현해보았다. 해당 부분을 기억하기 위해 이 글을 작성하였다. 이 포스팅은 프로젝트 과정에서 흐름을 기억하기 위해 작성한 것으로, 기본 흐름의 틀정도라고 생각하면 좋을 듯 하다. 해당 포스팅의 코드는 아래의 깃헙 주소에서도 확인 가능. GitHub - Bhinney/Study: ✨ 공부하면서 기록하는 공간 ✨ ✨ 공부하면서 기록하는 공간 ✨. Contribute to Bhinney/Study development by creating an account on GitHub. github.com ✨ 들어가기 전에, 메인 프로젝트에서 사용한 카카오 페이의 흐름 ✨ : 아래의 흐름을 바탕으로 프로젝트의 코드에 약간의 변형을 주어 구현할 예정 📚자료 .. 2022. 12. 8.
[Spring] 예외 처리 - 사용자 정의 ✔️ 사용자가 만들어 사용해야하는 경우가 존재한다 해당 내용도 계속해서 수정할 예정이다. ✅ 사용자 정의 예외처리 방법 1️⃣ 사용자 정의 예외를 위한 이넘 클래스를 만들어준다. import lombok.Getter; public enum ExceptionCode { MEMBER_NOT_FOUND(404, "Member Not Found"); @Getter private int status; @Getter private String message; ExceptionCode(int status, String message) { this.status = status; this.message = message; } } 2️⃣ RuntimeException을 상속 받은 BusinessLogicException을.. 2022. 10. 27.
[Spring] 예외처리 - 공통화(@RestControllerAdvice) ❗️직전에 포스팅한 내용처럼 예외를 처리하면 문제가 발생하기 때문에, 예외를 공통으로 처리하려고 한다.❗️ [Spring] 예외 처리 - Controller에서 처리 ❗️여기는 예외 처리를 Controller에서 해본 것이다. ❗️ 이렇게 유효성 검증과 같이 잘못된 요청이 들어가면 에러가 발생합니다. 이 때, 이 에러가 왜 발생했는지 위의 사진에서는 알 수 없다. bhinney.tistory.com ✅ @ControllerAdvice @ExceptionHandler, @InitBinder, @ModelAttribute가 적용된 메서드들에 AOP를 적용해 Controller에 적용하기 위해 고안된 어노테이션 클래스에 선언 + 전역적으로 발생하는 예외를 잡아서 처리할 수 있다. @Component 어노테이션.. 2022. 10. 27.
[Spring] 예외 처리 - Controller에서 처리 ❗️여기는 예외 처리를 Controller에서 해본 것이다. ❗️ 이렇게 유효성 검증과 같이 잘못된 요청이 들어가면 에러가 발생합니다. 이 때, 이 에러가 왜 발생했는지 위의 사진에서는 알 수 없다. 이러한 에러메세지를 조금 더 구체적으로 알 수 있도록 예외 처리를 하려고 한다. 예외 처리를 하는 방법은 여러가지가 있다. 메서드 내에서 예외 사항을 예측하여 처리하는 try-catch문 이용 요구사항에 의한 예외 처리 Spring Security에서 인터셉터로 잡아서 UnauthorizedException 같은 예외 처리 하지만 이런식으로 예외 처리를 여러 개 만들면 만들 수록 유지 보수가 어렵다. 이러한 부분을 개선하기 위해서 어노테이션을 이용한 예외처리를 하려고 한다. ✅ @ExceptionHandle.. 2022. 10. 27.
[Spring] MapStruct 사용하여 Mapper 구현하기 ✔️ Mapper을 구현하기 위해 MapStruct를 사용하면서 새롭게 알게 된 사실들을 정리하려고 한다. ✅ Mapper 구현 이유 DTO 클래스와 Entity 클래스의 변환 코드 단순화 계층간의 역할 분리 REST API 독립성 확보 ✅ MapStruct Mapper를 지원해주는 라이브러리 gradle.yml 파일에서 아래를 추가 dependencies { ... implementation 'org.mapstruct:mapstruct:1.4.2.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final' } // 버전은 바뀔수도 있음. ✔️ Check Mistake annotationProcessor를 추가하지 않고 작업을 하다.. 2022. 10. 20.