Spring Event
์ฌ์ฉํ๋ ์ด์ ์ ์ฅ์
๊ฐ์ฅ ์ฃผ๋ ์ด์ ๋ ์๋น์ค ๊ฐ์ ๊ฐํ ์์กด์ฑ์ ์ค์ด๊ธฐ ์ํจ
์๋ฅผ ๋ค์ด, ์ด๋ค ์ํ์ ์ฃผ๋ฌธํ๋ ํ๋ก์ธ์ค๊ฐ ์๊ณ , ํด๋น ํ๋ก์ธ์ค๋ ๋ด๋ถ์ ์ผ๋ก ์ฃผ๋ฌธ์ ์ฒ๋ฆฌํ ๋ค ํธ์ฌ ๋ฉ์์ง๋ฅผ ๋ฐ์กํ๊ณ , ๋ฉ์ผ์ ์ ์กํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค๊ณ ๊ฐ์
์ฃผ๋ฌธ ์ฒ๋ฆฌ์, ํธ์ฌ ๋ฉ์ธ์ง ๋ฐ์ก, ๋ฉ์ผ ์ ์ก ๊ธฐ๋ฅ์ด ๊ฐ๊ฐ์ ์๋น์ค(OrderService
, PushService
, MailService
)์ ๊ตฌํ๋์ด ์์ ๊ฒฝ์ฐ, ์๋ ์ฝ๋์ ๊ฐ์ด ์ฃผ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํ๋ OrderService์์ ํธ์ฌ ๋ฉ์์ง๋ฅผ ๋ฐ์ํ๋ PushService์ ๋ฉ์ผ ์ ์ก์ ํ๋ MailService์ ๋ํ ์์กด์ฑ์ ์ฃผ์
๋ฐ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
@Service
public class OrderService {
private final PushService pushService;
private final MailService mailService;
@Autowired
public OrderService(PushSerive pushService, MailService mailService){
this.pushService = pushService;
this.mailService = mailService;
}
}
์์ ์ฝ๋๋ ๊ฐ๋จํ์ง๋ง ์ค์ ๋ก ๋ณต์กํ ๋๋ฉ์ธ์ ๊ฐ๋ฐํ๊ฒ ๋๋ฉด ๋๋ฉ์ธ ์ฌ์ด์ ๊ฐํ ์์กด์ฑ์ผ๋ก ์์คํ ์ด ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ๊ณ ๋ฐ์ํ ์ ์๊ณ , ์ด๋ฐ ๊ฒฝ์ฐ ์คํ๋ง ์ด๋ฒคํธ๋ฅผ ํตํด ๋๋ฉ์ธ ๊ฐ์ ์์กด์ฑ์ ์ค์ผ ์ ์๋ค.
์คํ๋ง ์ด๋ฒคํธ ๊ตฌ์ฑ ์์ ๋ฐ ๋์ ๊ตฌํ
spring event๋ ํฌ๊ฒ event class ์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ event publisher ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ๋ฅผ ๋ฐ์๋ค์ด๋ event listener 3๊ฐ์ง ์์๋ก ๋ณผ ์ ์๋ค.
1. event class
public class OrderedEvent {
private String productName;
public OrderedName(String productName){
this.productName = productName;
}
public String getProductName() {
return productName;
}
}
event class๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ธฐ์กด์๋ ApplicationEvent ํด๋์ค๋ฅผ ํ์ฅํ์ฌ ์ฌ์ฉํ์์ง๋ง ์คํ๋ง ํ๋ ์์ํฌ 4.2 ๋ฒ์ ๋ถํฐ ์ ์์์ ๊ฐ์ด ApplicationEvent๋ฅผ ํ์ฅํ ํ์๊ฐ ์์ด์ก๋ค.
2. Event Publisher
@Slf4j
@Service
public class OrderService {
ApplicationEventPublisher publisher;
public OrderService(ApplicationEventPublisher applicationEventPublisher){
this.publisher = applicationEventPublisher;
}
public void order(String productName){
log.info(String.format("์ฃผ๋ฌธ ๋ก์ง ์ฒ๋ฆฌ [์ํ๋ช
: %s]", productName));
publisher.publishsEvent(new OrderedEvent(productName));
}
}
'TIL๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23.12.18 TIL (0) | 2023.12.18 |
---|---|
23.12.14 TIL (0) | 2023.12.14 |
23.12.12 TIL (0) | 2023.12.12 |
23.12.11 TIL (1) | 2023.12.11 |
23.12.08 TIL (0) | 2023.12.09 |