spring中XXXAware接口的作用
Aware接口,是Spring中的一個根接口。Aware的中文含義,是“意識到,察覺到,發覺,發現”,所以該接口的目的,通過實現Aware的子接口,讓類添加發覺信息的能力。
常見的Aware直接實現類:
ApplicationContextAware
實現該接口,可以訪問Spring容器中緩存的的其他Bean。
獲取的ApplicationContext,ApplicationContext接口繼承了MessageSource, ApplicationEventPublisher, ResourcePatternResolver,可以實現 {@link ResourceLoaderAware},
{@link ApplicationEventPublisherAware} or {@link MessageSourceAware} 的功能。
//TODO file resources 相關
//TODO BeanFactoryPostProcessor
EnvironmentAware
實現該接口,項目啓動時,可以獲取環境變量配置。
BeanFactoryAware
獲取加載該Bean的Bean工廠,可以動態加載Bean.
//TODO BeanFactory和ApplicationContext的區別
ApplicationEventPublisherAware
可以i獲取ApplicationEventPublisher,ApplicationEventPublisher可以用來發布事件,結合ApplicationListener來共同使用,下文在介紹ApplicationListener時會詳細提到。這個對象也可以通過spring注入的方式來獲得
ResourceLoaderAware
可以獲取ResourceLoader,ResourceLoader可以獲取classpath內所有的資源對象。
BeanNameAware
注入Bean的名字。
ServletContextAware
可以獲得ServletContext,ServletContext被稱爲域對象,是一個全局存儲信息的空間。
服務器會爲每一個工程創建一個ServletContext對象,工程內所有Servlet都會共享這個Servlet上下文。
應用被移除或服務器關閉時,纔會被銷燬,可以在整個應用過程中共享數據變量。
setAttribute(String name,Object value); 添加一個域屬性
getAttribute(String name) 獲取域屬性
removeAttribute(String name) 刪除域屬性
ServletContext接口的初始化參數允許servlet訪問與web應用相關的上下文初始化參數,這些由應用開發人員在部署描述符中指定:
getInitParameter
getInitParameterNames
java底層序列化步驟
使用 protobuf 進行數據序列化