개발/Spring(boot)
-
조직도를 만들어보자개발/Spring(boot) 2024. 12. 8. 23:42
회사에서 기존 조직 데이터가 유연하지 못해 이를 개편하고자 했고 내가 담당하게 됬다.그래서 이번 글에서는 기존 조직 데이터의 문제, 요구사항, 내가 만든 조직 데이터, 한계점에 대해 작성해보고자 한다.1. 기존 조직 데이터의 문제먼저 사내에서 사용하던 조직 데이터는 아래 데이터와 유사하게 생겼다. 유저 테이블의 컬럼(요약)id유저 이름기타 정보조직 - 대분류조직 - 중분류조직 - 소분류내가 생각한 것 이상의 문제가 있을 수 있지만, 내가 이 데이터를 봤을 때 느낀 가장 큰 문제는 조직의 계층이 3계층으로 고정되어 있다는 점 이다.그래서 부가적으로 생기는 문제는 세 가지가 있었다. 1. 어떤 유저는 소분류 조직에 속하지 않을 수 있다.XX그룹 라는 조직이 있다고 가정하고 이는 대분류에 속한다고 생각해보자..
-
ApplicationEventPublisher와 EventListener개발/Spring(boot) 2024. 12. 1. 16:30
업무를 하던 도중 사용자의 특정 행동을 감지하고 저장하는데 두 기능을 사용하고 있어서 해당 내용에 대해 조금 더 알아보고 작성해보고자 한다. 먼저 알아보기 전 회사 코드를 보고 추측해봤던 두 코드의 기능은 다음과 같다.1. ApplicationEventPublisher는 이벤트를 Publish하고 그 이후에 행동에는 책임을 지지 않는다.2. EventListener는 원하는 이벤트가 발생했을 때 해당 이벤트를 감지하고 이후 비즈니스 로직을 처리한다. 여기까지가 추측했던 동작 방식이고 이제부터는는 실제로 해당 기능을 찾아보며 조금 더 구체적이고 새롭게 알게된 내용을 작성해보고자 한다.ApplicationEventPublisher의 내부 구조는 다음과 같다.@FunctionalInterfacepublic i..
-
Springboot Redis 세션 만료 감지하기개발/Spring(boot) 2024. 11. 24. 22:29
업무를 하던 도중 사용자의 동선을 파악하고 싶다는 요구사항이 있었다.그리고 이 글은 그 과정에서 redis가 지원해주는 기능에 대해 적어보고자 한다. 먼저 Springboot의 AOP를 사용해 유저 정보/호출 API를 저장하도록 했고,FE분께도 동일한 DB에 URL을 저장할 수 있도록 하는 API를 하나 만들어서 어느정도(?) 해결했다.해당 기능 구현을 간단히 설명하자면 아래와 같다. 1. FE측에서 직접 API를 호출해 데이터를 저장 sample 페이지에 유저가 접근했다면 FE측에서는 BE에 아래와 같이 요청을 보낸다.Requst url: https://sample.com/api/loggingType: POST{ url: https://sample.com/sample}그러면 url과 유저 정보를 가..