Mình đang xây dựng 1 hệ thống website bằng Spring Boot. Hệ thống của mình có 1 class để crawl dữ liệu từ nguồn khác và lưu luôn vào database (ví dụ là class Crawler.java
), quá trình này thực hiện liên tục để dữ liệu luôn được cập nhật mới.
Mình muốn hỏi có từ khóa nào về phương pháp chạy class Crawler
này ngay lúc hệ thống khởi động không (tức là Crawler
sẽ khởi tạo và chạy cùng với method run()
?
Insert dữ liệu vào database theo chu kỳ khi chương trình Spring Boot đang chạy
Cảm ơn bạn Mình hiện đang ở công ty nên không thử được, nên không biết cách này liệu có thực thi code liên tục (ví dụ là 5phút 1 lần) đến khi chương trình Spring Boot
ngừng không.
Ngoài cách trên ra mình thử dùng Thread
: 1 thread chạy method run()
của Spring Boot, 1 thread chạy method insertDB()
của class Crawler
. Kết quả là cũng chạy được nhưng không biết có tốt bằng code dùng @PostConstruct
như của bạn không. Bạn nào biết thì xác nhận giúp mình nhé.
Muốn vậy phải tạo thread rồi lên schedule thôi
Spring có hổ trợ spirng-quartz
https://www.mkyong.com/spring/spring-quartz-scheduler-example/
Một cách khác nữa là @Component của bạn implements InitializingBean, sau đó override afterPropertiesSet(), nhét code lấy data của bạn vào nó sẽ thực thi sau khi các property của Component đó đã được khởi tạo. Để lập lại việc lấy data 5p một lần thì sử dụng ScheduledExecutorService.