본문 바로가기

Java & Spring3

모바일앱과 Spring boot 백엔드 연동을 통한 소셜로그인 구현 소셜로그인을 진행하기 위해선 클라이언트(여기서는 모바일앱)에 로그인한 사용자 계정 정보가 필요하다. 그래야 백엔드에 해당 이메일이면 이메일 등 계정 식별자로 회원가입이나 로그인처리를 진행할 수 있다. 크게 보면 다음과 같은 순서를 가진다. 정해진 표준 프로세스가 있는 것은 아니어서 각자 구현 방식에 따라 다르니 참고만. 1. 모바일앱에서 사용자 계정 정보 획득 모바일앱에서 해당 소셜로그인 공급자가 제공한 SDK를 이용하여 사용자 로그인 후 응답값을 벡엔드로 보낸다. 카카오와 네이버의 경우 AccessToken을 발급받을 수 있다. 구글의 경우, AccessToken을 바로 주지 않고 Id Token과 AuthCode라는 걸 받을 수 있다. Id Token은 OpenID Connect 프로토콜에 맞춘 JW.. 2023. 12. 28.
mapStruct 의존성 순서 문제 해결방법과 간단한 사용법 각 레이어 간 전달되는 DTO간 변환이나 DTO, Entity간 변환을 별도의 Mapper 클래스를 만들어 일일이 수작업으로 해주다보면 힘이 들기도 하고, 실수도 자주 생기게 된다. 테스트 코드에서 걸러주긴 하지만 이건 테스트 코드에서 거르기 전에 시스템 적으로 예방하는 편이 맞다. 물론 요즘에는 Copilot을 쓰면 이런 보일러 플레이트 코드를 자동완성해주니 일정 부분 해결되긴 하지만 좀 더 구조적인 방법을 찾고 싶다면 전문 Mapper 라이브러리를 써보는 것도 좋다. 이 분야에서 나름 네임드는 ModelMapper와 mapStruct다. ModelMapper는 별도의 인터페이스 정의같은 것 없이 상대적으로 좀 더 간편하게 시작할 수 있지만 구체적인 타입과 메서드를 알기 위해 런타임 리플렉션이 일어나므.. 2023. 12. 11.
Spring에서 DTO 생성 시 Primitive Type과 Reference Type 중 어떤 것을 쓰는게 좋을까? 너무 흘려보내는 것들이 많아 뭐라도 조금씩 매일 끄적여 보려 한다. 확실히 관성은 무섭고 한번 쓰지 않기 시작하니 백지에 뭔가를 적어 내려가는데 시작도 하기 전에 부담스러워지기 시작한다. 원래는 글쓰기가 너무 재미있었는데 말이지. 각설하고. -- Spring 에서 Controller - Service - Repository 간 데이터를 주고받을 때 DTO를 사용하는데 이때 각 멤버변수를 Primitive Type(원시 타입)을 사용할지, Reference Type(참조 타입)을 사용할지 고민스럽다. 예를 들어, 어떤 활성화 상태를 나타내는 enabled라는 변수가 있을 때 다음 둘 중 어떤 타입을 쓰는 게 좋을까? # Primitive Type private boolean enabled; # Refere.. 2023. 12. 10.