本篇內容介紹了“springBoot啟動時讓方法自動執行的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在springBoot中我們有時候需要讓項目在啟動時提前加載相應的數據或者執行某個方法,那么實現提前加載的方式有哪些呢?接下來我帶領大家逐個解答
1.實現ServletContextAware接口并重寫其setServletContext方法
@Component public class TestStarted implements ServletContextAware { /** * 在填充普通bean屬性之后但在初始化之前調用 * 類似于initializingbean的afterpropertiesset或自定義init方法的回調 * */ @Override public void setServletContext(ServletContext servletContext) { System.out.println("setServletContext方法"); } }
注意:該方法會在填充完普通Bean的屬性,但是還沒有進行Bean的初始化之前執行
2.實現ServletContextListener接口
/** * 在初始化Web應用程序中的任何過濾器或servlet之前,將通知所有servletContextListener上下文初始化。 */ @Override public void contextInitialized(ServletContextEvent sce) { //ServletContext servletContext = sce.getServletContext(); System.out.println("執行contextInitialized方法"); }
3.將要執行的方法所在的類交個spring容器掃描(@Component),并且在要執行的方法上添加@PostConstruct注解或者靜態代碼塊執行
@Component public class Test2 { //靜態代碼塊會在依賴注入后自動執行,并優先執行 static{ System.out.println("---static--"); } /** * @Postcontruct'在依賴注入完成后自動調用 */ @PostConstruct public static void haha(){ System.out.println("@Postcontruct'在依賴注入完成后自動調用"); } }
4.實現ApplicationRunner接口
/** * 用于指示bean包含在SpringApplication中時應運行的接口??梢远x多個applicationrunner bean * 在同一應用程序上下文中,可以使用有序接口或@order注釋對其進行排序。 */ @Override public void run(ApplicationArguments args) throws Exception { System.out.println("ApplicationRunner的run方法"); }
5.實現CommandLineRunner接口
/** * 用于指示bean包含在SpringApplication中時應運行的接口??梢栽谕粦贸绦蛏舷挛闹卸x多個commandlinerunner bean,并且可以使用有序接口或@order注釋對其進行排序。 * 如果需要訪問applicationArguments而不是原始字符串數組,請考慮使用applicationrunner。 * */ @Override public void run(String... ) throws Exception { System.out.println("CommandLineRunner的run方法"); }
“springBoot啟動時讓方法自動執行的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。