Spring Security를 사용한 사용자 인증 과정에서 Redis를 활용하려는 중에 다음과 같은 에러 문구를 확인할 수 있었다.java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to
OAuth2 소셜 로그인 흐름 요약 사용자 인증 요청 사용자가 소셜 로그인을 요청하면, 클라이언트는 소셜 플랫폼으로 리다이렉션한다. 권한 승인 및 인증 정보 반환 사용자가 소셜 플랫폼에서 권한을 승인하면, 인증 코드 또는 토큰이 반환된다. 서버 인증 처리 반환된 정보를
Spring Boot 프로젝트에서 OAuth2 로그인 구현 중, 어플리케이션이 실행되지 않고 순환 참조 문제가 발생했다.Spring Boot 2.6 이상에서는 순환 참조가 기본적으로 금지되어 있어 어플리케이션이 시작되지 않았다.콘솔 화면을 확인해보면 친절하게도 어떻게
UserController에 Logout 메서드를 만들고 Postman에서 API를 호출했다.먼저 로그인 API를 호출해서 토큰을 받고, 로그아웃 API의 Authorization을 Bearer Token으로 설정해준 후 API를 호출하게 되면 다음과 같은 결과가 나온
JWT는 서버와 클라이언트 간에 정보를 안전하게 전달하기 위한 토큰 기반 인증 방식입니다. 토큰은 보통 Base64로 인코딩된 JSON 형식의 데이터를 포함하며, 세 부분(헤더, 페이로드, 서명)으로 구성된다.특징:서버리스 인증 : JWT는 서버에서 상태 정보를 유지하
스프링부트 테스트는 주로 다음과 같이 나뉜다.단위 테스트(Unit Test) : 개별 클래스나 메서드의 동작을 검증 (Mock 객체를 자주 사용)통합 테스트(Integration Test) : 애플리케이션의 여러 계층 (Service, Repository 등)이 상호작
스프링부트 프로젝트를 도커와 깃허브 액션을 통해 CI/CD를 구성했던 과정을 간단히 기록해보려고 한다.먼저 사전에 준비물이 필요하다.EC2 인스턴스RDSDocker 설치, 계정 및 DockerHub에 레포지토리 만들기위에 언급된 내용들이 준비된 상태에서 진행하면 된다.
API를 테스트 하기 위해 Postman을 이용 중 이었는데 팀원들과 개발을 진행하면서 서로 만든 API를 좀 더 쉽게 통합하고 테스트 시간을 단축하고 싶어서 Swagger를 한번 적용해보는 과정을 정리해봤다.Swagger를 사용하기 위해 먼저 build.gradle에
사용자가 아이디와 비밀번호를 전송한다.스프링 시큐리티의 기본 필터로, 사용자가 입력한 인증 정보를 Authentication 객체로 변환한다.인증 정보를 처리하고 실제 인증이 유효한지 검증하는 역할을 한다. 기본적으로 여러 인증 공급자(AuthenticationProv
오늘은 Spring Boot에서 AWS S3에 이미지를 업로드하고 삭제하는 방법을 정리해보려고 한다. 먼저 AWS에서 해줘야 할 것들이 있다. AWS S3 버킷 생성 버킷 만들기를 클릭해준다. 버킷 이름을 지어주고 객체 소유권은 ACL 활성화됨으로 설정해주어야 Sp
EC2에서 스프링 서버를 실행시키기 위해 git clone을 받고 해당 디렉토리에 들어가./gradlew build명령어를 입력해 빌드를 하던 중 더 이상 진행되지 않고 멈춰 있길래 연결을 종료하고 다시 웹에서 EC2에 접속했는데 무한 로딩이 진행되면서 EC2 콘솔에
EC2를 이용해 스프링 프로젝트를 배포하는 과정을 정리해본다.먼저 AWS에 가입하고 EC2로 이동한 후에 '인스턴스 시작'을 클릭해서 생성 화면으로 넘어간다.이름을 지어주고 OS를 선택해주면 되는데 서버용으로 많이 사용되는 Ubuntu를 선택했다아래 쪽에 어떤 스펙의
오늘은 AWS EC2에 대해 공부한 내용을 정리해보려한다.AWS EC2는 클라우드 환경에서 컴퓨팅 파워를 제공하는 서비스로, 사용자는 물리적 서버를 구매하거나 관리하지 않고도 가상 서버를 쉽게 생성하고 관리할 수 있다.AWS의 핵심 서비스로, 클라우드 환경에서 확장 가
문제 발생 UserRepository에 대한 테스트 클래스를 만들고 findByEmail() 이라는 메서드에 대한 테스트 코드를 작성했다. 미리 setUp에서 MockUser를 만들고 JPA에서 기본적으로 제공하는 repository.save() 메서드를 이용해 데이터베이스에 저장하고, findByEmail()로 유저를 잘 찾아오는지 assertThat을...
트러블 슈팅 - QueryDSL NULL 값 대처하기 저번 트러블 슈팅에서 이어지는 내용이라 위쪽에 링크를 첨부했다. 문제 발생 BooleanBuilder를 이용해 파라미터에 null 값이 들어와도 정상적으로 예약 목록을 조회하도록 구현했지만, 파라미터 2개가 모두
테스트는 코드 품질을 보장하고, 새로운 기능을 추가할 때 발생할 수 있는 문제를 예방하는데 중요한 역할을 한다. Spring에서는 여러 테스트 기능을 제공하여 애플리케이션의 각 계층을 쉽게 검증할 수 있다.Spring에서는 @SpringBootTest, @WebMvcT
QueryDSL을 이용해서 다른 테이블과 조인을 하고 파라미터로 특정 값을 받아와 where 구문으로 필터링하여 결과를 조회하는 코드를 작성했다.파라미터로 받아오는 userId, itemId가 모두 값이 있을 경우는 정상적으로 예약 리스트를 받아올수 있었지만, 둘 중
LAG() : 현재 행에서 이전 행의 값을 가져온다.LEAD() : 현재 행에서 다음 행의 값을 가져온다.이 두 함수는 MySQL 8.0부터 지원되며, 윈도우 함수로 사용된다.이 함수들은 OVER 절과 함께 사용되어 데이터를 그룹화하거나 정렬된 순서에 따라 특정 행의
JPA를 복습하면서 몇 가지 헷갈렸던 부분을 정리해보려고 한다.영속성 전이는 엔티티의 상태 변경(영속화, 삭제 등)이 연관된 엔티티로 전이되는 것을 의미한다. ex) 부모 엔티티를 저장하거나 삭제할 때 자식 엔티티도 함께 저장하거나 삭제해야 하는 경우. 이를 위해 JP
MyBatis는 SQL 중심의 데이터 매핑 프레임워크로, Java와 데이터베이스를 연결하는 도구이다. SQL 작성의 자유도를 제공하며, 객체와 데이터베이스 간 매핑을 간소화한다.MyBatis를 활용할 때 두 가지 주요 접근 방식이 있다.1\. @Mapper를 활용한 간