Spring/Spring Boot 63

Spring Rest Docs Enum class 문서화 하기

개발환경 : Java 17, Spring 3 현재 사이드 프로젝트에서 Rest Docs + Swagger UI 를 사용 중 입니다. (참고 → restdocs + swagger ui 같이사용하기) 보통 상태나 선택 특정 목록같은 딱딱 선택지가 정해져있는 상태값은 Enum 으로 관리하는 걸 선호하는 편인데, 이게 RestDocs 를 사용하지만, Open API 를 사용하여 바로 Swagger UI 에 적용되는 json 파일을 자동적으로 만들어주다보니, Enum 클래스에 대한 문서 지원이 되지않아 (찾지못해) 신경이 좀 쓰였습니다. 그래서 이번 글에서는 Rest Docs 와 Open API를 이용한 Swagger UI 적용환경에서 ENUM 클래스를 어느정도 문서화하기 편한 상태로 만든 방법에 대해 공유하고자..

Spring/Spring Boot 2024.03.19

[Spring] FCM 푸시 알림 연동하기 (AOS, IOS)

오늘은 현재 진행중인 '채팅 서비스' 사이드 프로젝트에 적용할 목적으로 💡 Spring 기반의 Server 에서 푸시알림을 전송하는 방법에 대해 공부해보고자 합니다. 우리가 흔히 아는 어플리케이션 Push 기능을 쉽게 구현하기 위해서 시중에 나와있는 서드파티 솔루션들을 이용할 수 있는데 가볍게 찾아보았을때 가장 많이 나오는 솔루션을 2가지로 추릴 수 있었습니다. Amozon SNS (Simple Notification Service) FCM (Firebase Cloud Messaging) 위의 2가지 솔루션 모두 믿음직스러운(?) 대기업에서 제공하는 기술이지만 FCM 이 조금 더 적용하기 쉬워보였고 (공식문서가 잘나와있음) 또, '무.료.' 라는 점 (아마존은 알림 1백만 개당 0.50 USD) 안드로이..

Spring/Spring Boot 2024.01.07

[Spring Security] 존재하지 않는 API 호출 시 404 대신 401 or 403 을 반환할 때

개발환경은 Spring Boot 3.0.x + Spring Security 6.x 입니다 [목차] 문제 상황 Spring Security 에서 404를 반환하지 않는 이유 문제 해결 [결론 요약] error page 설정 FORWARD_REQUEST_URI - error 처리 경로 ("/error") spring seurity 에 등록 AuthenticationEntryPoint 혹은 AccessDeniedHandler 에서 핸들링 1. 🤣 문제상황 Spring Security 를 적용하니까 이게 6 버전이라 그런건지,, 설정을 놓친건지 클라이언트에서 존재하지 않는 리소스 endpoint 를 호출할 때 404 NOT FOND 를 반환하지 401 UnAuthorization 코드를 반환하는 문제가 있었습니..

Spring/Spring Boot 2023.07.15

Spring Security Exception Handling - Filter 단 예외 처리하기

오늘은 Spring Security 를 적용했지만 JWT 가 만료되거나, 잘못된 토큰일 경우 401 코드 뿐만아니라 에러 메세지까지 핸들링 해줄 수 있도록 설정해 주고자 합니다. 1. Spring Security 와 @ControllerAdvice 먼저 상황은 아래와 같습니다. (깔끔하져?) 사이드 프로젝트 진행중인데, 바빠서 이부분까지 신경을 못 써주고 당연히 메세지까지 전달해주겠지~ 했지만 아니였습니다. 일단 저는 Spring Boot 에서 에러 핸들링을 @ControllerAdvice 를 이용한 AOP 방식으로 처리해주었는데요 📌Spring Security 는 Spring Context 의 바깥 쪽, 즉 Filter 단에서 Servlet 에 전달되기 전에 처리됩니다. @ControllerAdvice..

Spring/Spring Boot 2023.07.06

[Spring] oneToMany, 일 대 다 관계 조회 성능 테스트 (Jpa, QueryDsl, Java Stream, 단일 DB 조회 쿼리 성능 비교)

👏🏻 오랜만에 포스팅! 오늘은 Spring 에서 다대다, 일대다 관계를 가지는 RDB 테이블에서의 데이터를 가져올 수 있는 방법과, 어떤 방법이 제일 빨랐는지 기록해볼려 합니다. 보통 Spring 에서 JPA를 사용하면 oneToMany, manyToMany 의 관계에서 터지는 N+1 문제를 해결하기 위한 방법을 많이 고민하고는 합니다. 저 또한 취준생때 겪었던 문제 중 가장 고민을 많이 고생했던 문제로 포스팅을 남겼던 기억이 있습니다. 👉 [Spring] JPA N+1 문제 해결방법(지연로딩 N+1, 2개 이상 ToMany 관계, fetch join, 페이지네이션) [목차] ✔️ 이번 포스팅에서는 JPA 의 @OneToMany 기능의 사용을 전혀 고려하지 않고 아래의 방법들에 대해서만 비교를 해보았습니..

Spring/Spring Boot 2023.06.30

Spring Data mongoDB + mysql 사용하기 (with. queries)

===== 채팅서버 구현하기 시리즈 ===== ✔️ [Web-Network] - 채팅 서버 설계를 위한 배경지식 정리 (HTTP, WebSocket, WebRTC) ✔️ [Spring/Spring Boot] - Spring WebSocket 공식문서 가이드 살펴보기 ✔️ [Spring/Spring Boot] - Spring WebSocket STOMP 채팅 서버 구현하기 (with. JWT, Exception Handling) 👉🏻 [Spring/Spring Boot] - Spring Data mongoDB + mysql 사용하기 (with. queries) 채팅서버를 구현하면서, 채팅 내역을 저장할 DB로 nosql 을 사용하기로 했고 그 중에 mongoDB를 사용하고자 했습니다. 기존의 API 서버에..

Spring/Spring Boot 2023.06.14

Spring WebSocket STOMP 채팅 서버 구현하기 (with. JWT, Exception Handling)

===== 채팅서버 구현하기 시리즈 ===== ✔️ [Web-Network] - 채팅 서버 설계를 위한 배경지식 정리 (HTTP, WebSocket, WebRTC) ✔️ [Spring/Spring Boot] - Spring WebSocket 공식문서 가이드 살펴보기 👉🏻 [Spring/Spring Boot] - Spring WebSocket STOMP 채팅 서버 구현하기 (with. JWT, Exception Handling) ✔️ [Spring/Spring Boot] - Spring Data mongoDB + mysql 사용하기 (with. queries) spring 으로 간단하게 채팅기능을 구현해 기록해보고자 합니다. 구현을 중점으로해서 가장 좋은 방법은 아닐겁니다(?) 만들고자 했던 서비스는, 카..

Spring/Spring Boot 2023.06.14

Spring WebSocket 공식문서 가이드 살펴보기

===== 채팅서버 구현하기 시리즈 ===== ✔️ [Web-Network] - 채팅 서버 설계를 위한 배경지식 정리 (HTTP, WebSocket, WebRTC) 👉🏻 [Spring/Spring Boot] - Spring WebSocket 공식문서 가이드 살펴보기 ✔️ [Spring/Spring Boot] - Spring WebSocket STOMP 채팅 서버 구현하기 (with. JWT, Exception Handling) ✔️ [Spring/Spring Boot] - Spring Data mongoDB + mysql 사용하기 (with. queries) spring websocket 공식문서를 따라해보면서 spring 에서는 websocket을 어떻게 사용해야하는지 알아보고자 합니다. 코드는 깃허브..

Spring/Spring Boot 2023.06.01

Spring Security 가이드 (with. Spring boot 3.0) - 스프링 시큐리티란, 동작 과정, 사용 방법, JWT 발급

개발환경은 Spring Boot 3.0.x + Spring Security 6.x 입니다 토이 프로젝트에서 로그인-회원가입 기능을 개발해야하는데 "스프링 시큐리티"를 적용할까 말까 하다가, 이왕 할때 해보자라는 생각으로 "스프링 시큐리티를 적용"해보고자 합니다. 솔직히 프레임워크에 대해서 깊게 공부하고 싶지는 않으니까 "간단, 간단 겉핥기 식 - 기능 구현" 에 초점을 맞춰 정리해볼려구 합니다! 👏🏻 목표는 1. 로그인 성공시 JWT 토큰 반환 + 2. 생성한 User Entity 기반의 회원가입입니다. [목차] 스프링 시큐리티란 스프링 시큐리티 동작과정 스프링 시큐리티 사용 가이드 JWT 사용해서 인증-인가 해주기 (custom 한 jwt filter 생성) 1. Spring Security 란 Spr..

Spring/Spring Boot 2023.05.04

[Spring] restdocs + swagger ui 같이사용하기 (restdocs 문서 자동화)

✨ api 문서화 정리 글 Swagger Spring Rest Docs RestDocs + Swagger-UI 같이사용하기 오느른, 오늘은,, 오늘우리는,,, Spring Restdocs 를 사용해 test 코드로 Ascciidoc 문서조각을 모으고,, 모아서 만든 adoc 문서를 또 편집하고.. html 로 변환하고 이 일련의 귀찮은 과정을 거쳐야하는 Spring Rest Docs 의 단점을 커버하기 위해 Swagger 와 restdocs 를 결합해보겠습니다 ! 👏🏻👏🏻👏🏻 사실 시작은 이러했습니다. 현재 사내에서는 Swagger 만을 사용하고 있기 때문에 프로덕션코드에 API 문서를 위한 코드가 존재하는게 지저분해서 현재 하고있는 토이프로젝트에는 RestDocs 를 적용해 보았습니다. 하지만, 아래처..

Spring/Spring Boot 2023.04.14
반응형