在平常的开发过程当中,有时候咱们须要用到getBean
的方法,此时,咱们想要用ApplicationContext来调用这个方法,那这个ApplicationContext是怎么获取到的呢?app
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()); }
运行结果以下:
两次打印的地址是同样的,因此咱们获取到的ApplicationContext是正确的。spa
BeanFactoryAware,能够获取到BeanFactory。
BeanNameAware,能够获取到bean的名称。
等其余不在描述。code