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

相关文章
相关标签/搜索