Spring
2023.11.07 TIL
오늘 한 것 개인 프로젝트 개인프로젝트 SSE 방식으로 알림 기능을 구현했는데, 오늘 회의를 통해 앱 푸시와 알림은 다르다는 것을 알게되었다.. 생각해보니 SSE 구독을 위해선 앱을 켜야 되는데, 보통 앱을 안켜도 푸쉬알림이 온다. 앱 푸쉬는 구글의 FCM으로 구현 가능하다고 하니, 내일 일어나서 알아봐야겠다. 결론: 1. 알림 기능 만들어놓은게 무쓸모가 되었음.. 그래도 공부하고 구현이 가능하니 나중에 웹 개발할 때 요긴하게 써먹어야겠다. 2. FCM 구현 가자!
2023.11.06 TIL
오늘 한 것 개인 프로젝트 개인프로젝트 어제에 이어서 구현하던 알림기능을 다 만들었다. 다양한 통신 방식 (폴링, 웹소켓 SSE(Server-Sent-Event) 중 SSE 방식으로 통신하는 것을 채택했고 Spring에서는 seeEmitter API를 통해 편리하게 구현할 수 있게 제공해서 해당 API를 이용하여 구현하였다. Server -> Client 통신 방식에 관련해서는 https://velog.io/@dev_jazziron/Polling-Long-Polling-SSE-WebSocket Polling / Long Polling / SSE / WebSocket 클라이언트가 http request를 서버로 계속 보내서 이벤트 내용을 전달 받는 방식클라이언트가 계속적으로 request를 보내기 때문에..
[Spring] 테스트 코드에서 JPA metamodel must not be empty! 예외가 발생할 때
문제상황 게시글 생성 Controller 테스트를 작성하고 테스트를 하려는데 해당 에러를 만나게 됐다. 처음엔 Entity 설정을 뭔가 잘못했나 생각했는데 딱히 이상은 없었고, 잘 모르겠어서 검색을 해보았다. 문제점 에러가 발생한 이유는 Auditing 때문이다. 게시글의 작성일 필드 값을 자동으로 넣어주기 위해 Auditing 설정을 했는데, @EnableJpaAuditing 을 App Class에서 설정을 해주었다. 이렇게 한 설정은 실행할 때는 문제가 되진 않지만, 내가 작성한 테스트에서는 문제가 된다. Spring 컨테이너를 요구하는 테스트는 가장 기본이 되는 @SpringBootApplication이 붙은 클래스가 항상 로딩이된다. @EnableJpaAuditing이 해당 클래스에 등록되어 있어..
2023.11.03 TIL
오늘 한 것 Spring 강의 듣기 Spring 개인 과제 강의듣기 Spring 주차가 되면서 Spring 강의를 듣게 되었다. 이미 이해하고 있던 것들도 있지만 어렴풋이 이해했던 것들을 다시 정리할 수 있는 시간이 된 것같다. 개인과제 간단한 익명 게시판을 만드는 과제를 받았다. 어느정도 Spring에 대한 지식은 있지만 테스트 코드 작성에 익숙치 않으므로 이번에는 테스트 주도 개발 방식(TDD)으로 구현을 해보려고한다. 이번에도 과제 구현 과정을 포스팅할 예정이다!
[Spring] spring-data-jpa Auditing 사용하기
Auditing 테이블을 설계할 때, 공통적으로 들어가는 컬럼이있는데, 바로 생성일자,수정일자,생성자,수정자 이다. 거의 모든 테이블에 들어가있고 정렬, 필터, 또는 검증? 도 할 수 있는 꽤나 중요한 정보들이다. 하지만 서비스를 요청을 하거나 응답을 줄 때, 필요한 정보가 아니기도하다. 서비스에는 영향이없지만 필요하고 중요한? 데이터를 spring-data-jpa 모듈에서 자동으로 넣을 수 있도록 제공을해준다. 해당 기능이 바로 Auditing이다. 사용하기 1. Main App 클래스에 @EnableJpaAuditing 추가하기 @EnableJpaAuditing @SpringBootApplication public class Application { 2. 엔티티 클래스 위에 @EntityListene..