스프링(7)
-
99클럽 28일차 TIL: JWT
#1. 오늘의 학습 키워드Spring에서의 JWT에 대해현재 사용자 관리 백엔드 측 개발을 맡고 있다.사용자 관리라 함은 해당 서비스를 사용할 수 있는 유저들의 인증, 권한 정보들에 대한 관리이다.따라서 사용자 별 ID, PW 관리 및 특정 메뉴에 대한 권한 관리 등에 대한 로직을 개발 중에 있다.그 중 비밀번호 재설정(찾기) 기능을 개발하다가 인증에 대해 공부하고 싶어졌다.해당 기능은 이메일로 인증코드를 전송하여, 사용자가 인증코드를 입력하여 일치하는 확인하는 로직 등으로 이뤄져 있는데, 이 때 로그인 후 클라이언트 측에서 획득한 토큰 정보 없이 이루어져야 한다.로그인 절차 없이 수행 되어야하는 기능이기 때문.그래서 토큰과 인증 절차에 대해 알아보고 싶어졌다.#2. 공부한 내용1. JWT- Json W..
2024.05.01 -
99클럽 21일차 TIL: Validation Group
#1. 오늘의 학습 키워드자바 스프링 부트에서 Validation을 특정 Group에 대해서만 걸어주고 싶을 때자바 스프링 부트에서 개발을 진행할 때, 만약 같은 DTO로 여러 API 를 대응했을 때, validation 의 규칙을 다르게 해야하면 어떻게 해야될까전에 Loki 서버로 에러 로그를 전송해주는 LokiUtil 컴포넌트를 개발하였다.해당 메서드로 프론트의 로그도 같이 전송해주려 API 를 개발하였는데,이때 API는 아래의 두 종류가 되고, 두 API는 기본적으로 로그 형식은 같기에, DTO는 하나를 공유하고 있다프론트의 에러 로그 전송 API프론트의 화면 방문 추적 로그 전송 API#2. 공부한 내용@NotBlank해당 어노테이션은 Dto의 속성에 공백..
2024.04.24 -
99클럽 13일차 TIL: Hikari CP
#1. 오늘의 학습 키워드 자바 스프링에서 Hikari 에 대해서 현재 회사에서 기존에 사용하던 MyBatis에 추가로 JPA를 도입하려한다. 두 기술을 동시에 사용하려다보니 고려사항이 많아진다. 그 중 현재 본인이 대응해야하는 것은 멀티 트랜잭션 관련 문제다. 기존 MyBatis로 설정된 transaction Manager 와 JPA로 설정된 transaction Manager 가 다르기에 묶어줘야하거나, 단일 트랜잭션을 묶어서 사용해야한다. 해당 문제를 해결하기 전에 CP와 히카리(Hikari)에 대해 짚고 가기 위해 글을 쓴다. (해결과정은 추후 블로그 글을 올리겠다) #2. 공부한 내용 JDBC Java Database Connectivity 자바에서 DB에 쿼리를 던지거나, 수정 할 수 있도록 ..
2024.04.16 -
99클럽 12일차 TIL: MVC
#1. 오늘의 학습 키워드 자바 스프링에서 MVC 의 개념 노드에서 자바 스프링부트로 리팩토링하는 과정에서, 개인적으로 언어 자체의 친숙도 문제 이외에는 크게 어려운 작업이 아니었던 이유는 코드 패턴이 흡사하였기 때문이다. Node Router (controller) → Service → DAO 패턴 Spring Controller → Service → Repository 패턴 여지껏 위 패턴으로 백엔드 개발을 진행해왔다 보니, 스프링을 사용하여 개발을 할 때는 MyBatis 를 사용하였기에 SQL 쿼리를 직접 구현하는 부분 제외하고는 처음엔 크게 익숙치 않은 구석은 없었다. 그럼 이쯤에서 질문을 할 수 있겠다. 이러한 패턴은 뭐라고 부르는 것일까? 이러한 패턴은 직접 사용해보니 직관적이고 구현하기 편리..
2024.04.15 -
99클럽 11일차 TIL: AOP
#1. 오늘의 학습 키워드 자바 스프링에서 AOP 의 개념 회사 내 백엔드 로직의 캐시를 도입하는 도중, 캐시 처리된 로직을 테스트 하던 중 redis 서버과의 연결이 안 된 상황에서 테스트가 된 적이 있었다. 그때 디비와의 연결은 문제가 없는데도, 캐시가 처리된 로직은 redis 서버만 다운되면 api 호출 시 에러가 났다. 개인적으로는 당연히 캐시 서버가 다운되면 디비로부터 정보를 가져와야 되는 게 아닌가라는 생각을 했다. 안타깝게도 그런 기능은 직접 구현해야됐던 상황이었다. 해당 기능을 구현하는 상황에서 모든 캐시 어노테이션 쪽에 디비와의 연결을 보장하는 로직을 공통적으로 적용되는 코드로 추출하고 싶었는데, 이러한 개념을 AOP 라고 한다는 것을 깨달았다. 사실 이미 공통적으로 사용되는 날짜, St..
2024.04.14 -
99클럽 7일차 TIL: Collectors.toList() vs. toList()
#1. 오늘의 학습 키워드 자바스프링에서의 Stream 을 사용해 filter, map 등을 쓴 뒤 stream을 다시 리스트로 만들어서 리턴하고 싶을 때, 사용 가능한 두 가지 메서드 중 어떤 거를 선택해야 될까? 자바 스프링으로 개발을 하다보면, 리스트에 대해서 map, filter 등 stream 메서드를 적용해야되는 경우가 많다. 그런데 그 직후 intellij 에서 제공해주는 메서드가 두가지가 있는데, 이를 혼용해도 상관이 없을까 하였는데, 그게 아니었다. 일반적으로 intellij 는 toList()를 쓰도록 권장을 한다. 그러나 바꾸고 나서 오류가 뜨는 상황이 오히려 생길 때도 있다. collect(Collectors.toList()) 자바 stream의 collect 메서드를 사용하여 요소..
2024.04.10