在平常的開發過程當中,有時候咱們須要用到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