오류 메세지 다음과 같은 에러 메세지가 발생하였다.
db에서 findById를 사용하여 이를 가져오는 controller 작성 후 테스트를 돌리는 과정에서 이와 같은 오류가 발생하였다.
Spring Framework에 기반한 자바 애플리케이션 프레임워크이다. 웹 애플리케이션을 구성하기 위한 복잡한 과정과 설정, 기능들을 자동으로 제공하여 빠르고 편리한 개발을 가능하게 해준다.
Spring Boot를 처음 시작할 때부터 나를 괴롭혀왔던 로그인 부분을 확실하게 하고자 정리하게 되었다.
세션을 사용하지 않는 JWT 인증 방식을 사용하는 Form Login을 구현해보았다.
저번에 Form Login을 구현하였고, JWT토큰과 Spring Security를 활용해 인증과 인가 처리를 구현하였다. 이번에는 여기에 Social Login인 Kakao Login을 구현하려고 한다.
게시물을 올리는 간단한 프로젝트에서 소셜 로그인을 카카오와 구글 두 개로 진행하기로 결정했다.
게시글의 조회수를 구현하고자 고민을 하였다. 게시글을 불러올 때마다 조회수를 증가시킨다면 무분별한 새로고침으로 조회수 조작이 가능해진다. 이를 막기 위해 하루에 한 번 게시글을 조회할 때 조회수를 증가시키는 방향을 고려하였다.
Spring Boot에서 다음과 같은 설정을 통해 api를 호출 시 수행되는 쿼리에 대해 출력되도록 설정하였다.
처음으로 Spring Boot를 빌드하여 도커를 통해 EC2에 배포했을 때는 다음의 명령어로 이미지를 실행하였다.
Spring Boot DAO(Data Access Object)인 Repository 계층의 단위 테스트하는 방법을 정리해보았다.
API 응답으로 모든 쿼리 결과를 주는 것은 비효율적이다. 쿼티 엔티티의 개수가 증가함에 따라 오버헤드도 커지게 된다.
Spring 프로젝트에서의 환경변수는 다양한 방법으로 설정이 가능하다. 거기에 Spring을 도커로 이미지화하고, 배포하는 과정에서도 환경변수를 처리하는 방식이 나눠지기도 한다.
OneToOne매핑으로 Member와 Recruit를 1:1 양방향 관계를 맺었다.이때 mappedBy를 통해 Member엔티티가 Recruit의 외래키를 가진 관계로 표현하였다.
웹페이지를 동적으로 로딩하여 데이터를 가져오는 웹 스크래핑이 필요한 상황이다. 이에 Selenium을 통해 스크래핑을 구현하려고 한다.
A -> B (1:n), B -> C (1:n), B -> D (1:n) 으로 엔티티가 연결된 상황이다. 다음 로직과 같이, findById로 변경사항을 저장할 엔티티를 선택하고, 해당 엔티티의 필드값을 set하여 값을 변경하고자 했다.
다음 코드와 같이 4개 유형의 크롤링 데이터 파일을 DB에 저장해야하는 상황이다. 해당 메서드 실행 결과,다음과 같은 에러가 발생했다. 이는 scrap테이블이 유니크 키 제약 조건을 위반했음을 의미한다.
프로젝트 진행 중, 서버가 자주 닫히는 현상이 발생했다. 서버가 닫힌 시간 즈음에 들어온 네트워크 패킷들이 평소보다 많았기에 t2.micro를 쓰던 필자에게는 서버가 작아서 그렇다고 수긍하게 만들었다. 서버가 닫히는 빈도가 점점 늘어나자, 원인을 찾기로 결정했다.