본문 바로가기

반응형
SMALL

Server/Spring

(24)
[Spring] Spring Boot에서 FCM으로 푸시알림 기능 구현하기 글을 시작하기 전에 이번 포스팅에서는 진행 중인 프로젝트에서 푸시알림을 전송하기 위한 API/기능을 구현했던 과정을 소개하려고 한다. 개발을 막 시작했을 즈음, 주변에서 푸시알림은 너무 어렵다는 말을 적지 않게 들어와서, 나도 모르게 긴장을 좀 하고 있었던 것 같다. 다른 몇몇 분들도 푸시알람은 어렵다는 생각을 하고 있을지도 모른다. 하지만 워낙 관련 자료들도 많고, 활용 서비스로 선택한 Firebase의 공식 문서도 잘 되어있으니, 일단 해보니 크게 어렵지 않았다. 그럼 이제 시작해보자! FCM 푸시알림을 전송하기 위해 FCM(Firebase Cloud Messaging) 서비스를 활용하기로 결정했다. 무료로 메시지를 전송할 수 있고, 많은 사용자들이 사용하고 있어 그 안정성이 보장되었을 거라 생각했기..
[Spring] Repository 테스트 코드 독립적으로 작성하기 글을 시작하기 전에 최근 Spring Boot에서 테스트 코드를 조금씩 연습해보고 있다. 일단 통합 테스트는 제외하고, 단위 테스트 위주로 작성하고 있다. Repository 테스트는 @DataJpaTest를 사용해서 진행하고 있는데, 불완전하게 독립적인 테스트 코드를 작성하여 각각 테스트에서는 성공하지만, 전체 테스트(build)에서는 실패하는 결과가 발생했다. 해결 과정을 글로 남겨보고자 한다. 문제 상황 3개의 Repository에 대해 테스트 코드를 작성하고 있다. 위 화면처럼 각각의 테스트는 성공한 결과이다. 하지만 build 같이, 전체적으로 테스트하는 과정에서는 실패한다. 왜??? 원인 분석 여러가지 시도와 몇몇 지인들에게서 얻은 조언, GPT와의 대화 등으로 인해 원인은 비교적 빨리 알아낼..
[Spring Boot] 멀티 모듈 구조(Multi Module Architecture) 적용기 글을 시작하기 전에 최근 멀티 모듈 구조를 도입했다. 아니 정확히 말하면 도입하는 중이다.. 1차적으로 분리와 리팩토링은 완료했으나, 구조를 100%로 이해한 건 아니라서 조금씩 공부하면서 개선점을 찾고 추가 적용해가고 있는 단계이다. 그래서 이 글을 쓸까말까도 좀 고민했다 🤔 잘못된 정보를 전달할 수도 있을까봐ㅠㅠ 하지만 실전과 기록이 최고의 학습법이라고 생각하는 사람으로서, 이런 생소한 개념은 기록으로 좀 남겨야 진짜 내 것이 되겠다!라는 생각도 들었다. 이제까지 설계한 과정을 기록하고, 이후로도 추가 적용할 때마다 해당 블로그 글을 조금씩 수정해나가려 한다. 하지만 또 잘못된 정보를 공유할 순 없기 때문에,, 참고한 레퍼런스들을 틈틈히 남겨둘테니, 한 분이라도 이 글을 참고하며 구조 설계를 도입하려..
[Spring] 스프링에서 Slack에 에러 로그 보내기 글을 시작하기 전에 자잘한 프로젝트까지 포함하여 2년 간 총 7번의 사이드 프로젝트를 경험하며 느낀 점 중 하나.. 로그 관리는 매우 중요하다. 특히 에러 로그! 물론 에러가 발생한 상황이야 직접 서버를 들어가 확인할 수도 있고, 에러가 발생했던 시나리오와 똑같이 재현해서 알아낼 수도 있다. 하지만 리소스가 너무너무 많이 들었다.. 최근 2주동안 초기 MVP 규모의 서비스 REST API를 빠르게 구현해야 할 일이 있었다. 이번에는 에러 로그를 수집해서 바로 대응할 수 있도록 하자. 하지만 트레이드 오프를 고려해서 가장 빠르게 설정할 수 있는 방법으로 선택하자. 라는 결론을 내리게 되었다. Slack 설정 및 연동 진행한 프로젝트는 Slack 서비스를 활용했다. 가장 빠르게 접근할 수 있는 협업 툴이었으..
[우당탕탕 개발 일지] Spring Security 트러블 슈팅: AntPathRequestMatcher Error Log Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'filterChain' defined in class path resource [com/example/userservice/security/WebSecurity.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'filterChain' threw exception with message: This method cannot decide whether these patterns are S..
[우당탕탕 개발일지] Spring Boot와 AWS S3을 이용하여 파일 업로드하기 안녕하세요. 아주 오랜만에 포스팅 글을 남겨보네요. 이번에 사이드 프로젝트를 진행하면서 이미지 업로드 API가 필요한 일이 생겨서 공부할 겸 글로 남겨봅니다. Spring Boot 버전은 3.x 버전이고, AWS 버킷에 파일을 업로드 한 후 파일의 공개 url을 가져오는 API 개발을 연습했어요. AWS S3 우선 AWS의 S3 서비스에서 버킷을 만들어주어야 합니다. 업로드한 파일을 public하게 접근할 수 있어야 하기 때문에 버킷을 생성할 때 퍼블랙 액세스 차단 설정만 해제해줍니다. 버킷을 생성했으면 정책 설정이 추가로 필요합니다. 버킷으로 들어가 권한 옵션의 버킷 정책에서 편집을 클릭해주세요. 그러면 위 이미지처럼 가장 오른쪽 버튼의 정책 생성기를 확인할 수 있는데 버튼 눌러주면 됩니다. Effec..
[우당탕탕 개발 일지] com.querydsl.core.types.ExpressionException 에러: 기본 생성자 필요 @Data @AllArgsConstructor public class MemberDto { private String username; private int age; } MemberDto를 만들어주고, @Test public void findDtoBySetter() { List result = queryFactory .select(Projections.bean(MemberDto.class, member.username, member.age)) .from(member) .fetch(); for (MemberDto memberDto : result) { System.out.println("DTO: " + memberDto); } } 다음과 같이 Projections.bean을 이용하여 DTO 조회를 했는데,..
[우당탕탕 개발일지] Querydsl 초기 세팅: 버전 5 기준 인프런 강의를 따라 Querydsl 관련해서 build.gradle 파일을 수정하던 중, querydsl을 컴파일하는 과정에서 오류가 발생했다. 찾아보니 강의의 querydsl 버전은4, 현재는 버전5로 업그레이드 되면서 그냥 버전이 안 맞는 문제였다. 아래 링크와 같이 해결할 수 있었다. 미래에 같은 오류가 발생하지 않도록.. !! https://github.com/SPRING-STUDY-2023/sohyeon-query-dsl/pull/1/commits/135da09783bb5f451af34a903098a838d5ebc512 [Week1] Section0 to Section4 by thguss · Pull Request #1 · SPRING-STUDY-2023/sohyeon-query-dsl Sect..

반응형
LIST