成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ApplicationContextInitializer接口

blankyao / 1921人閱讀

摘要:注在類上標(biāo)注,不是方法上方法是接口的方法,通過(guò)繼承和實(shí)現(xiàn)擁有了該方法打印容器里面有多少個(gè)打印人所有個(gè)的名字如下的實(shí)現(xiàn)類接口是在容器刷新之前執(zhí)行的一個(gè)回調(diào)函數(shù)。

一、.簡(jiǎn)述

ApplicationContextInitializer是Spring框架原有的概念, 這個(gè)類的主要目的就是在            ConfigurableApplicationContext類型(或者子類型)的ApplicationContext做refresh之前,允許我們                   對(duì)ConfigurableApplicationContext的實(shí)例做進(jìn)一步的設(shè)置或者處理。

二、 ApplicationContextInitializer 接口源碼:就一個(gè)方法

package org.springframework.context;
/*
注釋部分第一段的大概意思刷新之前回調(diào)接口初始化spring,ConfigurableApplicationContext類型(或者子類型)的ApplicationContext做refresh之前,允許我們對(duì)ConfigurableApplicationContext的實(shí)例做進(jìn)一步的設(shè)置或者處理。
     Callback interface for initializing a Spring {@link ConfigurableApplicationContext} prior to being {@linkplain ConfigurableApplicationContext#refresh() refreshed}....  
 */
 
 public interface ApplicationContextInitializer {

    /**
     * Initialize the given application context.
     * @param applicationContext the application to configure
     */
    void initialize(C applicationContext);

}


三.簡(jiǎn)單的實(shí)現(xiàn)使用,自定義初始化器
3.1 用maven建好后創(chuàng)建的類如下

pom文件:



4.0.0

com.fai
springboot04
1.0-SNAPSHOT
jar


    UTF-8
    1.8
    1.8




    
        
            org.springframework.boot
            spring-boot-dependencies
            1.5.10.RELEASE
            import
            pom
        
    



    
        org.springframework.boot
        
        spring-boot-starter
        1.5.10.RELEASE
    
    
        org.springframework.boot
        spring-boot-configuration-processor
        true
    




3.2.1 ApplicationContextInitializerImpl.java

/**
 * ApplicationContextInitializer的實(shí)現(xiàn)類
 *  ApplicationContextInitializer接口是在spring容器刷新之前執(zhí)行的一個(gè)回調(diào)函數(shù)。
 */
@Order(111) // @Order的value值越小->越早執(zhí)行。注:在類上標(biāo)注,不是方法上
public class ApplicationContextInitializerImpl implements ApplicationContextInitializer {
/**
 *  applicationContext.getBeanDefinitionCount()
 *      getBeanDefinitionCount()方法 是ListableBeanFactory 接口的方法,        ConfigurableApplicationContext 通過(guò)繼承和實(shí)現(xiàn)
 *      擁有了該方法
 */
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {

    // 打印容器里面有多少個(gè)bean
    System.out.println("bean count====="+applicationContext.getBeanDefinitionCount());

    // 打印人所有 beanName
    System.out.println(applicationContext.getBeanDefinitionCount()+"個(gè)Bean的名字如下:");
    String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
    for (String beanName : beanDefinitionNames) {
        System.out.println(beanName);
    }

}

}

3.2.2 ApplicationContextInitializerImpl2.java

/**
 * ApplicationContextInitializer的實(shí)現(xiàn)類
 *  ApplicationContextInitializer接口是在spring容器刷新之前執(zhí)行的一個(gè)回調(diào)函數(shù)。
 */
 @Order(1) // @Order的value值越小->越早執(zhí)行,注:在類上標(biāo)注,不是方法上
public class ApplicationContextInitializerImpl2 implements ApplicationContextInitializer {
/**
 *  applicationContext.getBeanDefinitionCount()
 *      getBeanDefinitionCount()方法 是ListableBeanFactory 接口的方法,ConfigurableApplicationContext 通過(guò)繼承和實(shí)現(xiàn)
 *      擁有了該方法
 */
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
    System.out.println("applicationContext.getApplicationName(),默認(rèn)為空(看源碼):"+applicationContext.getApplicationName());
    System.out.println("applicationContext.getDisplayName(),即context的name:"+applicationContext.getDisplayName());
}

}

3.2.3 MainApp.java

/**
 * ApplicationContextInitializer 理解
 *  1、寫一個(gè)類實(shí)現(xiàn)該接口
 *  2、注冊(cè)ApplicationContextInitializer
 *      2.1 方法一:springApplication.addInitializers(new ApplicationContextInitializerImpl());
 *      2.2 方法二:配置文件添加 context.initializer.classes=com.fai.test.ApplicationContextInitializerImpl  
                               context.initializer.classes=com.fai.test.ApplicationContextInitializerImpl2
       2.3 方法三:通過(guò)spring.factories文件配置(前面我們注冊(cè)自定義監(jiān)聽(tīng)器也可以用這個(gè)方法)
                   # key : 全類名,value : 實(shí)現(xiàn)類
                    org.springframework.context.ApplicationContextInitializer=
                    com.fai.test.ApplicationContextInitializerImpl,
                    com.fai.test.ApplicationContextInitializerImpl2 
 */
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {

    SpringApplication application = new SpringApplication(MainApp.class);

    // 2.1 方法一:添加自定義的 ApplicationContextInitializer 實(shí)現(xiàn)類的實(shí)例(注冊(cè)ApplicationContextInitializer)
    // 2.2 方法二:配置文件添加context.initializer.classes=com.fai.test.ApplicationContextInitializerImpl,context.initializer.classes=com.fai.test.ApplicationContextInitializerImpl2
    application.addInitializers(new ApplicationContextInitializerImpl());
    application.addInitializers(new ApplicationContextInitializerImpl2());

    ConfigurableApplicationContext context = application.run(args);

    context.close();

}

}

3.2.4 附錄配置文件application.properties添加內(nèi)容。用方法一就不需要該配置該內(nèi)容,用法二要添加下面的內(nèi)容context.initializer.classes=全類名,并且測(cè)試方法里面不用代碼顯示注冊(cè)初始化器

#注冊(cè)ApplicationContextInitializer
#context.initializer.classes=
  com.fai.test.ApplicationContextInitializerImpl,
  com.fai.test.ApplicationContextInitializerImpl2

4.測(cè)試結(jié)果:

5.小提示:IDEA 查看UML圖
5.1 Ctr + Alt + S 查看是UML Support否打上勾

5.2 在你想要查看的類上右鍵-->Diagrams,快捷鍵Ctrl + Shift+ Alt + U


5.3 導(dǎo)出圖片

導(dǎo)出的圖片效果

6、聲明:我這里的測(cè)試是 常規(guī)下,不是web應(yīng)用下哦!
參考了 http://blog.csdn.net/dm_vince...
http://www.jianshu.com/p/3828...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71040.html

相關(guān)文章

  • 自定義ApplicationContextInitializer接口實(shí)現(xiàn)

    摘要:簡(jiǎn)介是框架提供的接口該接口的主要功能就是在接口刷新之前,允許用戶對(duì)實(shí)例做一定的操作。該接口只有一個(gè)方法。實(shí)現(xiàn)該接口實(shí)現(xiàn)該接口,并在方法中打印容器中初始化了多少個(gè)對(duì)象。啟動(dòng)程序啟動(dòng)程序,打印日志容器中初始化數(shù)量原文鏈接 簡(jiǎn)介 ApplicationContextInitializer是Spring框架提供的接口, 該接口的主要功能就是在接口ConfigurableApplicationC...

    kk_miles 評(píng)論0 收藏0
  • 自定義ApplicationContextInitializer接口實(shí)現(xiàn)

    摘要:簡(jiǎn)介是框架提供的接口該接口的主要功能就是在接口刷新之前,允許用戶對(duì)實(shí)例做一定的操作。該接口只有一個(gè)方法。實(shí)現(xiàn)該接口實(shí)現(xiàn)該接口,并在方法中打印容器中初始化了多少個(gè)對(duì)象。啟動(dòng)程序啟動(dòng)程序,打印日志容器中初始化數(shù)量原文鏈接 簡(jiǎn)介 ApplicationContextInitializer是Spring框架提供的接口, 該接口的主要功能就是在接口ConfigurableApplicationC...

    alin 評(píng)論0 收藏0
  • Spring Boot 2.x 啟動(dòng)全過(guò)程源碼分析(上)入口類剖析

    摘要:設(shè)置應(yīng)用上線文初始化器的作用是什么源碼如下。來(lái)看下方法源碼,其實(shí)就是初始化一個(gè)應(yīng)用上下文初始化器實(shí)例的集合。設(shè)置監(jiān)聽(tīng)器和設(shè)置初始化器調(diào)用的方法是一樣的,只是傳入的類型不一樣,設(shè)置監(jiān)聽(tīng)器的接口類型為,對(duì)應(yīng)的文件配置內(nèi)容請(qǐng)見(jiàn)下方。 Spring Boot 的應(yīng)用教程我們已經(jīng)分享過(guò)很多了,今天來(lái)通過(guò)源碼來(lái)分析下它的啟動(dòng)過(guò)程,探究下 Spring Boot 為什么這么簡(jiǎn)便的奧秘。 本篇基于 S...

    MobService 評(píng)論0 收藏0
  • Spring Boot啟動(dòng)過(guò)程及回調(diào)接口匯總

    摘要:創(chuàng)建及準(zhǔn)備創(chuàng)建。目前已知關(guān)心這個(gè)事件的有要注意的是在這個(gè)階段,里只有,是的加載工作的起點(diǎn)。原因是注入這些回調(diào)接口本身沒(méi)有什么意義。在其構(gòu)造函數(shù)內(nèi)部間接的給注冊(cè)了幾個(gè)與相關(guān)注解的處理器。 相關(guān)代碼在: https://github.com/chanjarster/spring-boot-all-callbacks 注:本文基于spring-boot 1.4.1.RELEASE, spri...

    Taonce 評(píng)論0 收藏0
  • spring-framework源碼研讀

    摘要:額外知識(shí)點(diǎn)參考知識(shí)點(diǎn)加載策略資源后,容器啟動(dòng)時(shí)會(huì)調(diào)用的方法。從獲取對(duì)象對(duì)象,如果存在則拋異常。這個(gè)是重點(diǎn)核心的知識(shí)點(diǎn),參考知識(shí)點(diǎn)??吹竭@里應(yīng)該知道每一層的作用吧,一層一層往上遞進(jìn)第四步正在研讀 1.根據(jù)我們常用的web.xml里,我們找到的org.springframework.web.context.ContextLoaderListener。web.xml如下 moo...

    rottengeek 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<