在專案中我們有時候需要實作專案啟動后就執行的功能,比如將熱點資料存入redis中,
方式一:定義一個類實作CommandLineRunner介面,實作功能的代碼在run方法中,cnblogs中參考鏈接
補充:SpringBoot在專案啟動后會遍歷所有實作CommandLineRunner的物體類并執行run方法,如果需要按照一定的順序去執行,那么就需要在物體類上使用一個@Order注解(或者實作Order介面)來表明順序,
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class RedisDataRunner implements CommandLineRunner { @Autowired private SetRedisData redisData; @Override public void run(String... strings) throws Exception { redisData.setOrgData(); } }View Code
方法二:在方法中增加注解@PostConstruct,修飾一個非靜態的void()方法,csdn中參考鏈接
@PostConstruct注解的方法會在依賴注入完成后被自動呼叫:Constructor(構造方法) -> @Autowired(依賴注入) -> @PostConstruct(注釋的方法)
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Component public class RedisDataRunner { @Autowired private SetRedisData redisData; public static final ExecutorService pool = Executors.newFixedThreadPool(10); @PostConstruct public void init() { pool.execute(new Runnable() { @Override public void run() { redisData.setOrgData(); } }); } }View Code
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1130.html
標籤:NoSQL
