일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- java
- Elasticsearch
- Selenium
- API
- TSLA
- api cache
- Aggregation
- aqqle
- 양자컴퓨터
- JPA
- aggs
- file download
- elasticsearch cache
- NORI
- 테슬라
- KNN
- Docker
- Query
- Elastic
- mysql
- vavr
- Cache
- java crawler
- IONQ
- 아이온큐
- request cache
- dbeaver
- Analyzer
- redis
- ann
Archives
- Today
- Total
아빠는 개발자
[java] 이벤트 리스너 @EventListener 본문
728x90
반응형
EventListener 란?
Java의 @EventListener은 Spring Framework에서 사용되는 애노테이션입니다. Spring Framework은 이벤트 기반 아키텍처를 지원하며, @EventListener은 이벤트를 처리하는 메서드를 표시하는 데 사용됩니다.
@EventListener 애노테이션을 사용하면 이벤트를 수신하고 처리하는 메서드를 정의할 수 있습니다. 이 메서드는 특정 이벤트가 발생할 때 호출됩니다.
예를 들어, Spring 애플리케이션에서 이벤트가 발생하고 해당 이벤트를 처리하려는 경우 다음과 같이 @EventListener을 사용할 수 있습니다
라고 한다.
PotalEventHandler를 @Component 설정해주고
process 에 EventListener 어노테이션을 붙여준다.
그러면 ShopRequest 타입의 이벤트를 처리 할 수 있다.
package com.doo.aqqle.portal;
import com.doo.aqqle.model.request.LocationRequest;
import com.doo.aqqle.model.request.ShopRequest;
import com.doo.aqqle.service.LocationService;
import com.doo.aqqle.service.ShopService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.time.LocalTime;
@RequiredArgsConstructor
@Component
@Slf4j
public class PortalEventHandler {
@Async
@EventListener
public void process(ShopRequest shopRequest) {
log.info("ShopRequest : {}, 시간 : {}", shopRequest, LocalTime.now());
}
@Async
@EventListener
public void process(LocationRequest locationRequest) {
log.info("LocationRequest : {}, 시간 : {}", locationRequest, LocalTime.now());
}
}
ApplicationEventPublisher 를 선언해주고
private final ApplicationEventPublisher applicationEventPublisher;
applicationEventPublisher.publishEvent(shopRequest);
이렇게 이벤트 리스너를 실행시켜주면.. 되는데 이걸 어따쓴담..
void 라서 ..
package com.doo.aqqle.service;
import com.doo.aqqle.model.CommonResult;
import com.doo.aqqle.model.request.LocationRequest;
import com.doo.aqqle.model.request.ShopRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@RequiredArgsConstructor
@Service
@Slf4j
public class PortalService {
private final ResponseService responseService;
private final ApplicationEventPublisher applicationEventPublisher;
public CommonResult portalInfos (ShopRequest shopRequest, LocationRequest locationRequest) {
applicationEventPublisher.publishEvent(shopRequest);
applicationEventPublisher.publishEvent(locationRequest);
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("LOCATION", null);
resultMap.put("ITEM", null);
return responseService.getSingleResult(resultMap);
}
}
728x90
반응형
'Java' 카테고리의 다른 글
[java] Unix 타임스탬프 (0) | 2024.06.01 |
---|---|
[JPA] CRUD 구현하기 (1) | 2024.04.10 |
[Selenium] Java Selenium - multi browser (0) | 2023.12.31 |
[java] FileUtils.cleanDirectory (0) | 2023.12.31 |
Table '{DB}.hibernate_sequence' doesn't exist (0) | 2023.12.24 |