反射:程式執行狀態時,能動態建立物件,操作物件(方法、屬性)
spring建立物件過程:首先通過 beandefinationreader 介面將我們在profiles、annotation或者其他檔案中的內容注入到spring容器的bean資訊中,在建立物件之前,先配置spring的執行環境,然後通過 beanfactory 建立例項物件。為了提高擴充套件性,我們希望在 beanfactory 之前和之後能進行一些操作,因此抽象出來了 beanfactorypostprocessor 介面。同樣的,在 beanfactory 建立物件之前和之後也希望能對物件進行一些操作,因此抽象出 beanpostprocessor 介面。很明顯,這裡是觀察者設計模式的思想。
以上便是spring的整體設計思想。本質上就是在抽介面,體現了高擴充套件性,高內聚、低耦合的軟體設計理念。
beanfactory是生產bean的工廠,factorybean是beanfactory生產的乙個物件
當我們想要自己操作物件的時候,例如通過getobject()反射獲取物件並進行其他操作的時候,就可以使用factorybean
並且由於factorybean是beanfactory生產的物件,那麼也可以使用beanfactory生產的物件的特有方法
ioc與aop的主要目的都是為了降低耦合度,提高擴充套件性
這是在spring原始碼中beanfactory介面中的一段注釋,已經寫的很明白了
經歷一些***aware介面,把需要的spring元件通過 set***() 注入到bean
然後經過beanpostprocessor,執行postprocessbeforeinitialization()
使用者自定義 init-method
執行postprocessafterinitialization()
disposablebean的 destroy()
使用者自定義 destroy-method
可以看到,無非就是在初始化前做點事,初始化後做點事;先spring做事,後使用者做事
spring原始碼分析 spring原始碼分析
1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...
spring原始碼解析
spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...
Spring 原始碼分析
public throws bean ception 到這裡最終的方法就是refresh super只是做一些初始化工作,可以忽略。以下是初始化發放做的事情 debug main adding systemproperties propertysource with lowest search pr...