Spring中帶有Aware後綴的接口

1.Spring中提供一些Aware相關接口,像是BeanNameAware、ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,這些接口中都有且只有一個去掉接口名中的Aware後綴的設置方法,例如xxxAware接口只有一個setXxx()的方法,目的就是給實現該接口的類的xxx屬性設置值。aware的含義是感應的,那麼在spring中這些實現xxxAware接口的類是如何實現感應並設置xxx屬性的值的呢,答案就是在spring容器中在工廠類創建實例後使用instanceof判斷實例是否屬於xxxAware接口的實例,如果結果是true的話,那麼spring容器類就會調用實例的setXxx()方法給實例的xxx屬性設置值。簡單來說就是實現這些 Aware接口的Bean在被初始之後,可以從Spring容器中取得一些相對應的資源,例如實現BeanFactoryAware接口的Bean在初始後,Spring容器將會注入BeanFactory的實例,而實現ApplicationContextAware接口的Bean,在Bean被初始後,將會被注入 ApplicationContext的實例等等。

2.對於實現ServletContextAware接口的類,只有運行在Web容器中時纔有值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章