Spring源碼學習(一)__Spring源碼

來源:互聯網
上載者:User

Spring是最常見的架構,那麼他的內在機制是什麼呢。

public class TestBean {private String str = "haha";public String getStr() {return str;}}
public class TestSpring {public static void main(String[] args) {DefaultListableBeanFactory f = new XmlBeanFactory(new ClassPathResource("test.xml"));System.out.println(f.getBeanDefinitionCount());TestBean bean = (TestBean) f.getBean("testStr");System.out.println(bean.getStr());}}
<?xml version="1.0" encoding="utf-8" ?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/context          http://www.springframework.org/schema/context/spring-context.xsd"><bean id = "testStr" class="cn.pn.spring.TestBean"></bean></beans>
為什麼通過這樣一種方式就直接擷取到了Bean執行個體呢。

猜想一下,我們要定義了Bean,然後定義設定檔,就可以擷取了。它的內在機制應該是拿到設定檔資訊,根據反射擷取Bean的執行個體。

那麼就有兩個重點。

擷取Bean的配置資訊,可以是xml可以是註解。

根據配置資訊去裝配Bean,消極式載入或者直接執行個體化。


畫了一下XmlBeanFactory的結構圖:


最頂級的BeanFactory介面定義了Bean的準系統:擷取bean的模板方式和判斷bean的屬性。

實現它的有三個擴充介面:

AutowireCapableBeanFactory:顧名思義這個擴充介面主要定義的功能是:自動裝配的方式,bean的依賴關係,包含了Bean的初始化和銷毀,我的理解是定義了bean的生命週期功能。

HierarchicalBeanFactory:這個介面定義了兩個方法,擷取父類Bean工廠和判斷是否包含本級的bean,如果看過Servlet源碼能理解這個地方,讓子類能專註做自己的事情。

ListableBeanFactory:一句話解釋就是,提供了擷取所有bean的配置清單,而不是顯示調用getBean的時候去執行個體化Bean,換句話說就是擷取非消極式載入的bean工廠都需要實現這個介面。包含了擷取bean的幾種方式,bean的數量和name。

下面描述一下其他的類:

AliasRegistry:定義了對alias的簡單增刪改等操作。

SingletonBeanRegistry:定義了對單例的bean的註冊和擷取。

ConfigurableBeanFactory:提供了配置factory的各種方法,scope,bean的依賴等各種方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.