TIL - @ConfigurationProperties 어노테이션에 대해서(feat. @Value 쓰지 말기)OAuth 개발을 하다가 다음과 같이 로직을 짜야하는 상황이 생겼다. 카카오, 구글, 네이버 로그인을 다 지원하는 서비스인데, 문제는 OAuth라는 것은 표준 작동 방식이 있다 보니 각 로그인이 전부 똑같은 로직을 따른다. 로직이 같은데도 불구하고 카카오, 구글, 네이버 로그인마다 서로 다른 메소드를 만들기가 싫어서 switch 문으로 구분했다.private String getOAuthAccessToken(String authorizationCode, String registration) { ...(생략)... switch (registration) { case "googl..
🗄️Backend/SpringBoot
Spring Boot 자체 이메일 전송을 선택한 이유AWS의 관리형 서비스인 SES를 사용할지 아니면 Spring Boot에서 자체적으로 이메일 전송을 할지 고민이 많았었는데, 결과적으로는 자체적으로 이메일 전송을 하는 것으로 결정했다. 그 이유는 SES를 사용하려면 사용자가 최초 한 번은 “보안 인증”이라는 것을 해야 하는데, 이런 추가적인 과정이 사용자들에게 약간 불편할 수 있겠다는 생각이 들었다. 그리고 내 서비스에는 OAuth로 소셜 로그인을 하기 때문에 사용자의 이메일 정보가 잘못될 가능성이 없어 자체 이메일 전송을 선택했다.build.gradle에 종속성 설정메일을 보내기 위해서 spring-boot-starter-mail 종속성을 추가했고, 서버 단에서 간단하게 이메일에 들어갈 html을 파..
TIL - @Scheduled 어노테이션에 대해이메일 기능을 구현하면서 매일 일정한 시간에 메일을 보내줘야 하는 일이 생겼다. 찾아보니까 스프링 부트에 있는 @Scheduled 어노테이션을 사용하면 아주 간단하게 구현할 수 있다고 해서 해당 어노테이션을 사용해 구현해보았는데, 아주 간단하고 편리해서 이 어노테이션에 대해서 좀 더 알아보았다.Step1 - build.gradle 종속성우선 이 기능은 Springboot Starter에 기본적으로 내장되어 있는 기능이다. 다른 라이브러리를 추가할 필요 없이 처음 프로젝트를 시작했을 때 필수적으로 포함되어 있을 Springboot Starter가 build.gradle에 잘 포함되어 있는지만 보면 된다.dependencies { implementation 'o..
TIL - FilterExceptionHandler에 대해서기술적 문제 상황지금 진행하는 졸업 프로젝트에서는 OAuth 로그인과 JWT 토큰을 적극 활용하고 있다. 우리 서비스, NESS에서는 많은 API에서 ChatGPT를 사용하고 있는 만큼, 회원가입/로그인을 하지 않은 사용자가 우리 서비스를 쓰지 못하게 막아야 했다. 따라서 프로젝트의 초기부터 JWT 토큰 로직을 도입했는데 그만큼 JWT 토큰 관련해서 발생하는 에러 처리를 하는 부분이 필수적이었다.참고로, JWT는 "JSON Web Token"의 약자로, 정보를 안전하게 전달하기 위한 표준 방법 중 하나이다. 이 토큰은 JSON 형식으로 데이터를 표현하며 정보를 안전하게 전달하기 위해 서명(signature)이나 클래임(claim) 등이 암호화되어..
TIL - doFilter 메소드에 대해서 개발하면서 매우 궁금했던 게 바로 chain.doFilter(request, response); 메소드였다. JwtAuthorizationFilter에 존재하는 이 doFilter는 도대체 무엇을 하는 애일까? 내 첫 번째 TIL에서 공부했던 게 바로 doFilter 안의 인자로 들어가는 HttpServletRequest request와 HttpServletResponse response였는데, 얘들은 일종의 요청과 응답을 나타내는 객체라는 것을 알게되었다. 그러나 이제 궁금한 점은 그렇다면 요청과 응답을 동시에 가지고 있는 doFilter 메소드는 무엇을 하는 것 인지였다. oracle에 따르면, 필터는 리소스(서블릿 또는 정적 콘텐츠)에 대한 요청이나 리소스..