Spring中Bean的生命週期是怎樣的?spring中XXXAware接口的作用?java底層序列化步驟?使用 protobuf 進行數據序列化?線程池的執行流程

 

 

 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 進行數據序列化

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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