1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SpringBoot啟動(dòng)時(shí)讓方法自動(dòng)執(zhí)行的幾種實(shí)現(xiàn)方式

        共 2132字,需瀏覽 5分鐘

         ·

        2021-03-01 00:08

        程序員的成長(zhǎng)之路
        互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享 
        關(guān)注


        閱讀本文大概需要 2 分鐘。

        來自:https://www.cnblogs.com/lsgspace/p/10508180.html

        在springBoot中我們有時(shí)候需要讓項(xiàng)目在啟動(dòng)時(shí)提前加載相應(yīng)的數(shù)據(jù)或者執(zhí)行某個(gè)方法,那么實(shí)現(xiàn)提前加載的方式有哪些呢?接下來我?guī)ьI(lǐng)大家逐個(gè)解答

        1.實(shí)現(xiàn)ServletContextAware接口并重寫其setServletContext方法

        @Componentpublic class TestStarted implements ServletContextAware {    /**     * 在填充普通bean屬性之后但在初始化之前調(diào)用     * 類似于initializingbean的afterpropertiesset或自定義init方法的回調(diào)     *     */    @Override    public void setServletContext(ServletContext servletContext) {        System.out.println("setServletContext方法");    }}

        注意:該方法會(huì)在填充完普通Bean的屬性,但是還沒有進(jìn)行Bean的初始化之前執(zhí)行 

        2.實(shí)現(xiàn)ServletContextListener接口

            /**     * 在初始化Web應(yīng)用程序中的任何過濾器或servlet之前,將通知所有servletContextListener上下文初始化。     */    @Override    public void contextInitialized(ServletContextEvent sce) {        //ServletContext servletContext = sce.getServletContext();        System.out.println("執(zhí)行contextInitialized方法");    }

        3.將要執(zhí)行的方法所在的類交個(gè)spring容器掃描(@Component),并且在要執(zhí)行的方法上添加@PostConstruct注解或者靜態(tài)代碼塊執(zhí)行

        @Componentpublic class Test2 {    //靜態(tài)代碼塊會(huì)在依賴注入后自動(dòng)執(zhí)行,并優(yōu)先執(zhí)行    static{        System.out.println("---static--");    }    /**     *  @Postcontruct’在依賴注入完成后自動(dòng)調(diào)用     */    @PostConstruct    public static void haha(){        System.out.println("@Postcontruct’在依賴注入完成后自動(dòng)調(diào)用");    }}

        4.實(shí)現(xiàn)ApplicationRunner接口

        /**     * 用于指示bean包含在SpringApplication中時(shí)應(yīng)運(yùn)行的接口??梢远x多個(gè)applicationrunner bean     * 在同一應(yīng)用程序上下文中,可以使用有序接口或@order注釋對(duì)其進(jìn)行排序。     */    @Override    public void run(ApplicationArguments args) throws Exception {        System.out.println("ApplicationRunner的run方法");    }

        4.實(shí)現(xiàn)CommandLineRunner接口

        /**     * 用于指示bean包含在SpringApplication中時(shí)應(yīng)運(yùn)行的接口??梢栽谕粦?yīng)用程序上下文中定義多個(gè)commandlinerunner bean,并且可以使用有序接口或@order注釋對(duì)其進(jìn)行排序。     * 如果需要訪問applicationArguments而不是原始字符串?dāng)?shù)組,請(qǐng)考慮使用applicationrunner。     *      */    @Override    public void run(String... ) throws Exception {        System.out.println("CommandLineRunner的run方法");    }
        <END>

        推薦閱讀:

        京東二面:內(nèi)存耗盡后Redis會(huì)發(fā)生什么?

        用Java實(shí)現(xiàn)每天給對(duì)象發(fā)情話

        5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號(hào)內(nèi)回復(fù)「2048」,即可免費(fèi)獲取??!

        微信掃描二維碼,關(guān)注我的公眾號(hào)

        朕已閱 

        瀏覽 49
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            chinesewoman熟乱 | 青娱乐在线视频2 | 美国人做爰全过程 | 美女被捅出白浆 | 91精品丝袜国产高跟在线 | 欧美啪啪动态图 | 日本裸体大乳mm77图片 | 免费的三及片 | 久久国产精品伦子伦 | 波多野结衣之潜藏淫欲 |