springboot 9

[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] Embedded MongoDB! 통합테스트를 위한 인메모리 몽고디비 설정하기

현재 mongodb와 mysql 을 함께 사용하고있는 프로젝트에서 통합테스트를 위해 mongodb 도 h2 같은 in-memory db로 사용할 수 있는게 없을까 찾아보다가 알게된 방법에 대해 정리하는 글 입니다. 공식적으로 Spring Document 에 언급된 in memory 방식의 nosql db 를 사용할 수 있는 방버을 찾지못해 오픈소스 라이브러리를 사용하였습니다. 참고해주세요! ✔️ Spring Boot 환경에서 Embedded MongoDB 를 사용하는 3가지 방법 1) de.flapdoodle.embed.mongo.spring embeded mongodb 라고 검색하면 가장 많이 나오는 오픈소스 라이브러인 것 같습니다. 나온지 10년 가까이된 것 같고, 지금까지도 활발하게 contribu..

[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 Junit] @SpringBootTest + @Autowired 에러 "Could not autowire. No beans of "

때는 바야흐로.. ATDD 과정 수강 중 각각의 E2E 인수테스트의 데이터베이스를 서로 영향받지않게 격리 시켜주기 위해 test 패키지에 만든 별도의 클래스를 빈으로 올려 @Autowired 로 주입받고자 했습니다. 하지만 에러가 뜨는군요! DataBaseCleanUp 이라는 Class는 Test 패키지 아래에서만 존재하는 클래스입니다. @TestComponent public class DataBaseCleanUp { .. 생략 } @SpringBootConfiguration 의 scan 대상으로는 포함시키지 않기위해 @TestComponent 를 적용해 주었습니다. @TestComponent는 Test 를 위한 Component 이지만, javadoc 설명처럼 직접적으로 ComponentScan 을 사..

Spring/Spring err 2023.07.05

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 Request DTO 추상클래스로 받아오기 (까지의 트러블 슈팅..😂)

이번 포스팅은 스프링에서 Client 에서 받는 Json 데이터를, 조건에 따라 다른 유효성 검사를 하기위한 과정에서의 트러블 슈팅 기록입니다.. ➡️ 상황 사내에서, 쿠폰 정책에 따라 각각의 쿠폰을 등록할 떄, 필요한 조건이 달라졌기 때문에 기존의 단일 유효성 검사에서, 어떤 쿠폰이냐에 따라서 Custom 한 Validation 을 적용해야하는 상황이였습니다. [문제 직면부터 시도과정] @RequestBody 로 받아오는 DTO 클래스 생성자에 throw Exception ➡️ 내가 던진 Exception 이 아닌 예상치 못한 `Json Parse Error : HttpMessgeException` 이 던져지고, `ClassCastException`이 터짐.. 문제 해결 후, 확장성을 고려하여 DTO ..

Spring/Spring Boot 2022.11.17

[Spring DB 1편] (2) 커넥션풀과 데이터소스 이해

인프런 김영한 - 스프링 DB 1 강의를 듣고 정리한 글 입니다. 목차 Connection Pool 이란 DataSource 란 DataSourc 예제 1. 커넥션 풀 이해 이전 게시물의 방법대로 JDBC 를 사용한다면 데이터베이스에 접근할 때 마다 매번 커넥션을 획득해야하고 아래와 같은 불필요한 커넥션 과정을 거쳐야합니다. 커넥션 획득 과정 어플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. DB 드라이버는 DB 와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW 와 기타 부가정보를 DB 에 전달한다. DB는 ID, PW 를 통해 내부 인증을 완료하..

Spring 이란 - 스프링 VS 스프링 부트

Spring VS Spring boot 간단하게! 개발 속도가 느리고 비대했던 스프링 프레임웍을 좀 더 빠르게 만드는데 집중하기 위해 개발된 프레임워크가 스프링부트 입니다. 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원해주는 프레임워크 (최근에 기본으로 사용) 단독으로 실행할 수 있는 스프링 어플리케이션을 쉽게 생성 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 손쉬운 빌드 구성을 위한 starter 종속성 제공 스프링과 3rd parth(외부) 라이브러리 자동 구성 - Spring에 맞는 외부라이브러리 버전을 알아서 설정해줌 메트릭, 상태확인, 외부 구성 같은 프로덕션 준비 기능 제공 관례에 의한 간결한 설정 Spring boot는 Spring 프레임워크를 편리하게 ..

Spring/Spring Boot 2021.11.03
반응형