기술과 생각/스프링

현재 개발중인 서비스는 어떤 "미션" 이라는 것을 유저가 참여할 수 있다. 해당 "미션"을 정해진 시간 내에 완료하지 못하면 휴대폰으로 푸시알림이 가도록 했다. 이 과정에서 겪은 문제와 해결법을 적어보았다. 미션을 참여할때 유저는 키값으로 메인미션인지 서브미션인지 구분하는 값과 해당 미션ID와 유저ID를 담고 value에는 미션시작datetime이 담겨져있다. 미션을 완료하지 못했을때 푸시를 보내야하는데 해당 시점에 어떤 trigger하는 이벤트가 발생하지 않는다. 미션이 만료된 것을 알 수 있는 유일한 수단은 redis에서 expire하는 이벤트를 subscribe하여 확인하는 수 밖에 없다. 먼저 스프링말고 레디스 서버에서 어떻게 expire된 이벤트를 확인할 수 있는지 보자. 레디스를 설치하면 이벤..
들어가기 처음에 예외처리하여(Exception) 클라이언트에게 원하는 데이터를 내보낼수 있다는 사실을 몰랐다. 그때 해결하려했던 생각은 ErrorMessage라는 객체를 만들어서 서비스층에서 조건에 걸리지 않으면 ErrorMessage 를 return 하려고 했다. 그렇게 하려고 했던건 다시 말하지만 단순히 예외처리를 하였을 땐 따로 JSON 데이터로 사용자에게 응답을 주지 못할 것이라고 생각하였기 때문이다. 그래서 아래와 같은 방법으로 해결하려고 했다. 첫번째 방향 하고 싶었던 것은 아래 코드처럼 예외를 throw 하되 클라이언트에 데이터를 같이 응답해주고 싶었다. public String sendAuthMail(String userId) throws Exception { String authKey; ..
들어가기 인프런-스프링 핵심 원리에서 싱글톤 컨테이너에 대해 배우고 정리한 것입니다. 먼저 싱글톤이란 생성자를 통해 계속 인스턴스를 만들어 사용하는 것이 아니라 클래스를 한번만 메모리에 할당하여 그것을 계속 재활용하는 디자인 패턴을 말합니다. 특정 디자인 패턴이 만들어진 이유가 있을겁니다. 싱글톤도 그런 이유가 있습니다. 코드를 보면서 알아봅시다. 쌩자바로짠 서비스 객체 public class Service { public void logic() { System.out.println("객체 로직 호출"); } } 기존에 쌩자바로 어떤 서비스를 사용자가 호출하게 되면 위 이미지처럼 여러 사용자들이 Service를 호출하여 그때마다 새로운 인스턴스가 생성되어 사용했습니다. 예를들어 배달의민족에서는 초당 5만..
kyupid
'기술과 생각/스프링' 카테고리의 글 목록