스프링 캐시 동작 과정 분석
·
Spring
프로젝트에 스프링 캐시를 도입하는 과정에서 어떤 방식으로 내부 구현이 되어 있는지 궁금해졌습니다. @Cacheable 어노테이션을 사용해서 캐시 조회 기능을 사용했을때 어떻게 동작하는지 위주로 분석해보겠습니다.캐시 호출 시 가장 먼저 동작하는 클래스는 CacheAspectSupport이다. 해당 클래스는 AOP를 사용해 스프링 캐시의 구체 기술을 쉽게 적용할 수 있도록 도와주는 역할을 수행한다. 해당 클래스 내의 execute() 메서드가 호출되면 findCacheValue()라는 내부 메서드가 호출되서 캐시값을 가져온다. findCacheValue() 메서드를 좀 더 자세히 살펴보자.  findCachedValue() 메서드 내부에 findInCaches()라는 메서드가 하나 더 있는걸 볼 수 있다. ..
ThreadPoolExecutor 파헤쳐보기
·
카테고리 없음
최근 스프링이 제공하는 @Async를 사용한 비동기 작업을 구현하다가, 작업을 실행하는 쓰레드풀에 대해 조금 더 자세히 알아봐야 겠다는 생각이 들었습니다. 이번 글에서는 설정값들을 변경하며 ThreadPoolExecutor를 가지고 놀아본 경험을 기록해보고자 합니다.ThreadPoolExecutor은 무엇인가ThreadPoolExecutor는 ExecutorService를 구현한 클래스로서 매개변수를 통해 다양한 설정과 조정이 가능하며 사용자가 직접 컨트롤 할 수 있는 쓰레드풀입니다.  위의 코드와 같이 여러 옵션들을 사용자가 쓰레드풀 생성시에 직접 설정할 수 있습니다.  저희가 고정 크기의 쓰레드풀을 생성하기 위해서는 Executors.newFixedThreadPool(nThreads) 메서드를 사용합..
스케쥴러를 사용한 푸시 알림과 배치 처리 기능 구현
·
Project
이전 포스팅에서는 스프링에서 스케줄링을 사용하는 방법과 개선이 필요한 부분들을 살펴봤습니다. 먼저 마일스톤에는 어떤 기능들을 스케줄링으로 제공하는지 살펴본 뒤 앞에서 학습한 내용을 적용해나간 과정을 공유해보려 합니다.푸시 알림 스케쥴러 개발마일스톤에는 사용자가 선택한 요일과 시간에 리마인드 알림을 FCM 푸시를 통해 보내줍니다.  리마인드 알림 기능은 다음과 같은 규칙을 가지고 있습니다.요일은 복수 선택이 가능하다.시간 설정은 30분 단위로 가능하다. (ex. 7:00 -> 7:30 -> 8:00)사용자는 알림을 받을지 여부를 직접 선택 가능하다.구현 시 고려사항알림의 기준이 되는 목표 테이블과 요일을 저장하는 테이블  조회에 사용되는 컬럼alarm_enabled : 알람을 보낼지 여부를 결정합니다.al..