본문 바로가기

Backend/Spring

(25)
Spring Boot의 의존성 관리 및 Bean 생성 과정 안녕하세요. 이번 포스팅에서는 SpringBoot가 어떻게 자동적으로 필요한 Dependencies를 받아오는지, 필요한 Bean들을 생성하는지에 대한 포스팅을 진행해보려 합니다. Dependencies 관리 만약에 저희가 maven project로 다음의 dependency만 추가한 뒤, package를 실행해 보면 어떠한 일이 벌어질까요? org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test 보시는 바와 같이 정말 많은 의존성 패키지들이 추가됩니다. 심지어 저희는 spring-boot-starter-web이나 spring-boot-starter-test의 버전조차 명시하지 않았는..
[ SpringBoot ] 장르 기반 간단한 영화 추천 API 설계하기 #2 안녕하세요. https://chanho0912.tistory.com/93 [ SpringBoot ] 장르 기반 간단한 영화 추천 API 설계하기 #1 안녕하세요. 이번에는 간단한 토이 프로젝트를 소개해드리겠습니다. 간단하게 영화 추천 API를 설계해보려 합니다. 전체 코드는 https://github.com/KimChanHoLeeJunSung/MovieRecommendationApplication GitHub -.. chanho0912.tistory.com 저번 포스팅에 이어 이번 포스팅에서는 Spring data JPA와 QueryDSL을 사용하여 여러 API를 만들어보겠습니다. Controller package com._chanho.movie_recommendation.movie; import com..
[ SpringBoot ] 장르 기반 간단한 영화 추천 API 설계하기 #1 안녕하세요. 이번에는 간단한 토이 프로젝트를 소개해드리겠습니다. 간단하게 영화 추천 API를 설계해보려 합니다. 전체 코드는 https://github.com/KimChanHoLeeJunSung/MovieRecommendationApplication GitHub - KimChanHoLeeJunSung/MovieRecommendationApplication Contribute to KimChanHoLeeJunSung/MovieRecommendationApplication development by creating an account on GitHub. github.com 해당 레포지토리에 Public으로 공개해 놓긴 했는데... 포스팅을 따라 하시면서 간단하게 해 보시면 좋을 것 같습니다. 시나리오 0. ..
[Spring Boot] JWT token, refresh token을 활용한 회원 도메인 구현 안녕하세요. 이번 포스팅에서는 JWT token과 refresh token을 활용한 회원 가입, 로그인 구현을 진행해보겠습니다. Spring을 활용하여 애플리케이션을 개발할 때 Rest API를 구현하신다면, JWT token을 들어보셨을 겁니다. 간단하게 JWT token에 대해 살펴보겠습니다. JWT token JWT는 JSON web token의 약자입니다. URL-safe(URL로 이용할 수 있는 문자로만 구성된)의 JSON입니다. Access Token & Refresh Token Access Token과 Refresh Token 모두 JWT token으로 이루어집니다. Access Token은 유효기간이 짧은 인증 도구이며, Access Token의 유효기간이 만료되었을 때 Refresh To..
[Spring/SpringBoot] Spring Security - Remember Me 안녕하세요. 이번 포스팅에서는 Spring의 Remember-me 즉 로그인 기억하기 기능에 대해 살펴보겠습니다. Session 보통 일반적인 웹 서비스에서, Client가 로그인을 하게 되면 세션 Id가 서버로부터 부여됩니다. 이는 이 사용자에 대한 인증이며, 서버에서 따로 관리하며 이 인증정보로 서버의 리소스들을 접근할 수 있게 됩니다. 하지만 당연하게도 이 세션 Id는 취약합니다. Client가 지워버릴 수도 있고, Server가 꺼졌다가 재시동되면 당연히 Client들의 세션 Id를 보관하던 저장소도 사라지게 됩니다. 이렇게 되면 로그인 정보가 사라지게 됩니다. Spring tomcat은 기본적으로 session timeout을 30분 정도로 가지고 있습니다. 이 말은 로그인을 해도 30분이 지나..
[Spring/SpringMVC] spring 빌드 시 npm 라이브러리 추가하기 안녕하세요. 이번 포스팅에서는 spring 빌드 시에 npm 라이브러리를 추가하는 방법에 대해 포스팅하도록 하겠습니다. 저희가 흔히 타임리프 혹은 jsp와 같은 템플릿 엔진을 사용하게되면, javascript라이브러리를 링크를 통해 첨가하는 경우가 많습니다. 가령 html head태그에 위와 같이 https:~~ 링크를 통해 해당 라이브러리를 추가하는 경우를 볼 수 있습니다. 특별한 경우가 아니면 위 방식도 괜찮은 방법입니다. 하지만 생각을 조금 바꾸어보면, 링크주소가 변경되거나 추가 버전이 릴리즈 되어 구 버전을 더 이상 활용할 수 없게 될 수도 있습니다. 또한 네트워크 문제에 따라 서비스가 불안정해질 수도 있습니다. 만약에 위 라이브러리들을 사전에 받아놓고, 저희가 빌드 시에 추가할 수 있다면 위 방..
[Spring/SpringBoot] SpringSecurity를 API Server에 적용하기(JWT) 안녕하세요. 오늘 포스팅에서는 Rest Api Server에 Spring Security를 적용시켜 인증된 권한을 가진 유저에게만 요청을 허용하는 방법에 대해 알아보도록 하겠습니다. 우선 spring security를 사용하시려면 gradle 기준 다음의 dependency를 추가하셔야 합니다. implementation 'org.springframework.boot:spring-boot-starter-security' 1. Spring Security 스프링에서 인증 및 권한 부여를 쉽게 도와주는 spring security framework를 제공해줍니다. spring boot 기반 프로젝트를 진행 중이시라면 별도의 보안 관련 처리 없이 spring security를 적용하여 사용하실 수 있습니다. ..
[Spring/SpringBoot] RestController에서 Validation Api 사용하기 + MethodArgumentNotValidException 예외 처리하기 안녕하세요. 오늘은 Validation(유효성 검사)의 예외처리에 대해 살펴보겠습니다. 이번에 스프링으로 프로젝트를 진행하게 되었는데, Account 관련 처리를 맡게 되어 회원가입에 관한 Validation 인증을 구현해야 하는 상황이었습니다. ControllerAdvice에서 class를 받아 구현하려 하니, 잘 작동이 되지 않아 제가 사용한 방법을 포스팅하려 합니다. 제가 사용한 SignUpForm은 다음과 같이 정의하였습니다. package com.SCAR.Account; import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Email; import javax...