spring學習之Aware接口

在平常的開發過程當中,有時候咱們須要用到getBean的方法,此時,咱們想要用ApplicationContext來調用這個方法,那這個ApplicationContext是怎麼獲取到的呢?app

ApplicationContextAware

ApplicationContextAware繼承了Aware接口,同時定義了setApplicationContext方法。下面咱們看看怎麼經過ApplicationContextAware接口獲取這個ApplicationContext。
MyApplicationContextide

public class MyApplicationContext implements ApplicationContextAware {
    ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    public ApplicationContext getApplicationContext() {
        return applicationContext;
    }
}

MyConfig測試

@Configuration
public class MyConfig {
    @Bean
    public MyApplicationContext myApplicationContext() {
        return new MyApplicationContext();
    }
}

測試代碼this

@Test
public void test(){
    ApplicationContext app = new AnnotationConfigApplicationContext(MyConfig.class);
    MyApplicationContext myApplicationContext =app.getBean("myApplicationContext",MyApplicationContext.class);
    System.out.println(app);
    System.out.println(myApplicationContext.getApplicationContext());
}

運行結果以下:
image.png
兩次打印的地址是同樣的,因此咱們獲取到的ApplicationContext是正確的。spa

其餘Aware接口

image.png
BeanFactoryAware,能夠獲取到BeanFactory。
BeanNameAware,能夠獲取到bean的名稱。
等其餘不在描述。code

相關文章
相關標籤/搜索