Điều này dễ dàng được thực hiện với một ApplicationListener
. Tôi đã làm điều này để nghe Spring's ContextRefreshedEvent
:
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@Component
public class StartupHousekeeper implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(final ContextRefreshedEvent event) {
// do whatever you need here
}
}
Trình nghe ứng dụng chạy đồng bộ vào mùa xuân. Nếu bạn muốn đảm bảo mã của bạn chỉ được thực thi một lần, chỉ cần giữ một số trạng thái trong thành phần của bạn.
CẬP NHẬT
Bắt đầu với Spring 4.2+, bạn cũng có thể sử dụng @EventListener
chú thích để quan sát ContextRefreshedEvent
(cảm ơn @bphilipnyc vì đã chỉ ra điều này):
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@Component
public class StartupHousekeeper {
@EventListener(ContextRefreshedEvent.class)
public void contextRefreshedEvent() {
// do whatever you need here
}
}