특정 조건을 만족하는 db값들의 그룹이 생성될 경우,
메일로 알림을 보내는 기능을 구현하고 있습니다.
지금까지의 구상은
1) 지도에서 범위를 그리고 완료를 누르면 위도, 경도, 반경을 db에 저장
2) AOP AfterReturning을 이용, db 입력 시마다 db 전체를 훑어 매칭 발생여부를 확인
3) 매칭 발생시 메일 발송
으로 진행해왔습니다.
단, 1)의 진행을 Ajax로 구현하다보니 매칭이 발생하는 db입력이 발생할 경우
사용자에게 2)와 3)의 수행 완료까지 Ajax 리턴이 지연되는 문제가 발생하였습니다.
여러 방법을 강구하다가 결국 Spring이 제공하는 Async 기능을 통해 이용하여 간단히 해결되었습니다.
@Configuration 클래스에 @EnableAsync 를 선언하고
@AfterReturning 으로 수행되는 메소드에 @Async 를 추가로 선언하여,
2)와 3)의 수행을 비동기적으로 처리하는 방식입니다.
@Async 선언되는 메소드는 접근제한자가 public이어야 하고,
호출하는 객체가 동일하면 안된다는 제약사항이 있지만 큰 문제는 아니었습니다.
이제 매칭 검증과 메일 발송의 처리는 비동기적으로 처리하여
Ajax 리턴은 지연되지 않게 되었습니다.
'Java & Spring' 카테고리의 다른 글
스프링 크롤링+스케쥴링 (0) | 2020.08.10 |
---|---|
Spring MVC ajax input output 구현시험 (0) | 2020.08.10 |
2020. 08. 06 (목) 스프링 시큐리티 적용 (3) | 2020.08.07 |
자바 스윙 미니 프로젝트 - 캐치마인드 CatchMind (0) | 2020.06.09 |
2020.05.22 (금) 미니 프로젝트 발표일 : 캐치마인드 완성 CatchMind (2) | 2020.05.22 |