最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot啟動執(zhí)行特定代碼的方式匯總

 更新時間:2021年12月03日 11:20:59   作者:MrDeng886  
這篇文章主要介紹了Springboot啟動執(zhí)行特定代碼的幾種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

實現(xiàn)InitializingBean接口或使用@PostConstruct注解

實現(xiàn)InitializingBean如下

public class AnotherExampleBean implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
        // 做一些初始化的工作
    }
}

官方對其的解釋是這樣的:實現(xiàn)這個接口會讓這個bean的所有必要的屬性都被容器注入后(依賴注入),再去執(zhí)行afterPropertiesSet()里的方法。

筆者再用一個簡單的例子去實際演示一下(注意:使用@PostConstruct和實現(xiàn)接口是等價的,可以二選一

我們在init方法上使用了@PostConstruct注解,并且方法里使用到了Chicken類,而這個Chicken類是通過依賴注入來設置的,所以印證了官方說的話,會在依賴注入完以后才會調用@PostConstruct注解的方法。那為什么不在構造器里往List里面方Chicken類呢,因為容器調用構造器方法的時候,Chicken類還沒被注入,所以要寫在@PostConstruct注解的方法里。

// 首先聲明一個實體類
@Data 
public class Chicken {
    private String name ;
}
// 將他注入容器
@Configuration
public class UserConfig {
    @Bean
    public Chicken putUser(){
        Chicken chinken = new Chicken();
        chinken.setName("普通雞塊");
        return chinken;
    }
}
// 在family 類中調用 注入chinken
@Component
public class Family {
    @Resource
    Chicken chicken;

    public static List<String> names;

    @PostConstruct
    public void init(){
        names.add(chicken.getName());
    }
    public Family() {
        names = new LinkedList<>();
    }
}

在這里插入圖片描述

實現(xiàn)ApplicationListener接口

如果一個容器里的bean實現(xiàn)了ApplicationListener接口,那么在任何時候,如果有ApplicationEvent(事件)在ApplicationContext(容器)中被發(fā)布,該bean會收到通知,從而可以執(zhí)行相應策略。

下面是Spring提供的幾種常用的ApplicationEvent事件

事件名稱 解釋
ContextRefreshedEvent 當容器ApplicationContext容器正在初始化或refreshed時會發(fā)布這個事件。這里的初始化意味著所有的bean都被加載,并且有后置處理的bean都被檢測到并激活了。
ContextStartedEvent 當容器啟動調用start()方法是會發(fā)布這個事件,這里的開始是所有生命周期的bean都收到了一個開始的信號
ContextStoppedEvent 當容器調用stop方法時會發(fā)布這個事件

舉一個簡單的例子,下面的代碼我實現(xiàn)ApplicationListener接口并監(jiān)聽ContextRefreshedEvent事件,所以當springboot啟動并且初始化完成后,就能執(zhí)行下面的方法了。

@Component
@Slf4j
public class MenuManage implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
       //做一些事情
    }
}

實現(xiàn)CommandLineRunner或ApplicationRunner 接口

實現(xiàn)了CommandLineRunner的bean會被springboot監(jiān)測到,并在項目啟動后執(zhí)行run方法,如果有多個bean實現(xiàn)了CommandLineRunner接口,那么可以使用order注解來指定執(zhí)行順序。

@Order(2)
@Component
public class ServerStartedReport implements CommandLineRunner{
    @Override
    public void run(String... args) throws Exception {
        //do something
    }
}

而實現(xiàn)ApplicationRunner接口與實現(xiàn)CommandLineRunner的唯一不同是,后者接收的參數(shù)是main方法傳進去的原始參數(shù),而ApplicationRunner接收的參數(shù)是封裝過原始參數(shù)的,可以通過參數(shù)名字name來獲取指定的參數(shù)。

@Component
public class MyApplicationRunner implements ApplicationRunner{

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ApplicationRunner:"+ Arrays.asList(args.getSourceArgs()));
        System.out.println("getOptionNames:"+args.getOptionNames());
        System.out.println("getOptionValues:"+args.getOptionValues("foo"));
        System.out.println("getOptionValues:"+args.getOptionValues("log"));
    }
}

到此這篇關于Springboot啟動執(zhí)行特定代碼的幾種方式的文章就介紹到這了,更多相關Springboot啟動執(zhí)行代碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    這篇文章主要介紹了Java 單鏈表數(shù)據(jù)結構的增刪改查教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解Java前綴樹Trie的原理及代碼實現(xiàn)

    詳解Java前綴樹Trie的原理及代碼實現(xiàn)

    Trie又被稱為前綴樹、字典樹。Trie利用字符串的公共前綴來高效地存儲和檢索字符串數(shù)據(jù)集中的關鍵詞,最大限度地減少無謂的字符串比較,其核心思想是用空間換時間。本文主要介紹了Trie的原理及實現(xiàn),感興趣的可以了解一下
    2022-11-11
  • Spring-cloud Config Server的3種配置方式

    Spring-cloud Config Server的3種配置方式

    這篇文章主要介紹了Spring-cloud Config Server的3種配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java編程中最基礎的文件和目錄操作方法詳解

    Java編程中最基礎的文件和目錄操作方法詳解

    這篇文章主要介紹了Java編程中最基礎的文件和目錄操作方法詳解,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2015-11-11
  • 過濾器 和 攔截器的 6個區(qū)別(別再傻傻分不清了)

    過濾器 和 攔截器的 6個區(qū)別(別再傻傻分不清了)

    這篇文章主要介紹了過濾器 和 攔截器的 6個區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java數(shù)據(jù)結構之紅黑樹的原理及實現(xiàn)

    Java數(shù)據(jù)結構之紅黑樹的原理及實現(xiàn)

    紅黑樹是一種特殊的二叉查找樹,每個結點都要儲存位表示結點的顏色,或紅或黑。本文將通過示例為大家詳細講講紅黑樹的原理及Java實現(xiàn),感興趣的可以了解一下
    2022-09-09
  • Autowired的注入過程源碼解析

    Autowired的注入過程源碼解析

    這篇文章主要為大家介紹了Autowired的注入過程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • JDBC中Statement的Sql注入問題詳解

    JDBC中Statement的Sql注入問題詳解

    這篇文章主要介紹了JDBC中Statement的Sql注入問題詳解,sql注入攻擊指的是通過構建特殊的輸入作為參數(shù)傳入web應用程序,而這些輸入大都是sql語法里的一些組合,通過執(zhí)行sql語句進而執(zhí)行攻擊者所要做的操作,需要的朋友可以參考下
    2023-10-10
  • Springboot項目使用html5的video標簽完成視頻播放功能

    Springboot項目使用html5的video標簽完成視頻播放功能

    這篇文章主要介紹了Springboot項目使用html5的video標簽完成視頻播放功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot在 POM 中引入本地 JAR 包的方法

    SpringBoot在 POM 中引入本地 JAR 包的方法

    在開發(fā) Spring Boot 應用程序時,您可能需要使用本地 JAR 包來添加自定義庫或功能,本文將介紹在 Spring Boot 項目的 POM 文件中如何引入本地 JAR 包,感興趣的朋友跟隨小編一起看看吧
    2023-08-08

最新評論

新龙县| 社旗县| 墨玉县| 香河县| 区。| 雷山县| 石嘴山市| 绿春县| 胶州市| 马公市| 泌阳县| 迁安市| 郑州市| 水富县| 深泽县| 霍山县| 冷水江市| 遂昌县| 阳东县| 八宿县| 保亭| 肇源县| 福建省| 江陵县| 霸州市| 湖州市| 井冈山市| 宜州市| 观塘区| 桐城市| 南川市| 丽江市| 揭西县| 兴义市| 中山市| 普宁市| 招远市| 苍山县| 陆川县| 安丘市| 海淀区|