1. 程式人生 > >Spring 工作原理

Spring 工作原理

源代碼 工作 讀取 nbsp 動態 解析 object str loader

spring框架有兩個重要的功能是IOC和AOP

IOC(依賴註入):將對象的創建和依賴關系交給容器進行管理,簡化了開發過程。

AOP(面向切面):spring通過預編譯方式和運行期動態代理的方式在不修改源代碼的情況下,給程序添加功能的一種思想。

springIOC工作原理

springIOC最重要的單個包是beans,context,core包

其中最重要的兩個接口是:BeanFactory和BeanDefinition

BeanFacoty:是springIOC核心工廠接口,根據對象的依賴關系進行創建對象。ApplicationContext就是其中的一個具體實現。

要定義一個工廠必須滿足三個條件

①需要持有各種bean的定義

②需要持有bean之間的依賴關系

③需要讀取xml配置文件的工具

BeanDefinition:是spring中bean的定義接口,該接口繼承了兩個接口,AttributeAccessor和BeanMetadataElement。AttributeAccessor是core包下的,使bean定義的接口具有處理屬性的能力。BeanMetadataElement是bean包下的,它可以獲得bean的配置定義的一個元素。在xml文件下,就是會持有bean的一個標簽。

BeanFactory持有bean的定義是通過Map集合實現的(BeanName是key),Map集合是Map<String,BeanDefinition>而非Map<String,Object>,是因為bean的初始化是可控的,可以在啟動容器時創建實例,也可以在使用才創建實例。通過lazy-init屬性來實現 (默認為false)

bean的初始化過程就是往Map集合裏面註入內容。

其過程分為三部分:定位(xml文件的位置)、解析、註冊(將BeanName和對應的BeanDefinition添加到Map中去)

解析過程:先通過Reader讀取xml文件,然後通過documentLoader將資源轉化為Document,最後通過SAX解析器解析Document文件。

SpringAOP工作原理:

其中重要的接口有:

Advice:是一個超級接口,擴展了很多的子接口,如AfterAdvice和BeforeAdvice。作用是給目標對象添加的方法

PointCut:決定需要切入的方法

Advisor:通知者。Advisor依賴於Advice,而Advisor的子接口,PointAdvisor還依賴於PointCut.。作用:該接口確切的包含了要通知誰和要通知什麽。

FactoryBean:該接口是產生Bean的特殊Bean

FactoryBean的實現類ProxyFactoryBean:產生Proxy的Bean,也就是產生一個加強的Bean

該對象最重要的兩個屬性是:interpretorNames和targetName,interpretorNames該屬性是確定需要加強哪些東西以及怎麽加強。targetName該屬性是目標對象。

Spring 工作原理