Spring原始碼分析(二)

2021-08-18 09:19:37 字數 1632 閱讀 2542

針對spring中bean初始化時擴充套件類執行順序進行分析

通過getbean逐層最終到bean例項化前後呼叫的方法,主要是aware介面、beanpostprocessor、initializingbean、init-method的呼叫順序

abstractbeanfactory#dogetbean->abstractautowirecapablebeanfactory#createbean->abstractautowirecapablebeanfactory#docreatebean->abstractautowirecapablebeanfactory#initializebean

protected object initializebean(final string beanname, final object bean, rootbeandefinition mbd) 

}, getaccesscontrolcontext());

} else

if (mbd == null || !mbd.issynthetic())

try

catch (throwable ex)

if (mbd == null || !mbd.issynthetic())

}

invokeawaremethods方法

private void invokeawaremethods(final string beanname, final object bean) 

if (bean instanceof beanclassloaderaware)

if (bean instanceof beanfactoryaware)

} }

throws bean***ception

} return result; }

invokeinitmethods方法

protected void invokeinitmethods(string beanname, final object bean, rootbeandefinition mbd) throws throwable 

if (system.getsecuritymanager() != null)

}, getaccesscontrolcontext());

}catch (privilegedactionexception pae)

}else

} /*

*呼叫init-method方法

*/if (mbd != null)

} }

throws bean***ception

} return result;

}

private void invokeawareinte***ces(object bean) 

if (bean instanceof embeddedvalueresolveraware)

if (bean instanceof resourceloaderaware)

}if (bean instanceof messagesourceaware)

}} }

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

Spring 原始碼分析

public throws bean ception 到這裡最終的方法就是refresh super只是做一些初始化工作,可以忽略。以下是初始化發放做的事情 debug main adding systemproperties propertysource with lowest search pr...

spring原始碼分析

spring源 解析 一 ioc容器 url spring源 解析 二 ioc容器在web容器中的啟動 url spring源 解析 三 spring jdbc url spring源 解析 四 spring mvc url spring源 解析 五 spring aop獲取proxy url sp...