Spring系列第四講 xml中bean定義詳解
bean概念回顧
我們再來回顧一下,被spring管理的物件統稱為bean,我們程式中需要用到很多物件,我們將這些物件讓spring去幫我們建立和管理,我們可以透過bean xml配置檔案告訴spring容器需要管理哪些bean,spring幫我們建立和組裝好這些bean物件;那麼我們如何從spring中獲取想要的bean物件呢,我們需要給bean定義一個名稱,spring內部將這些名稱和具體的bean物件進行繫結,然後spring容器可以透過這個的名稱找對我們需要的物件,這個名稱叫做bean的名稱,在一個spring容器中需要是唯一的。
bean xml配置檔案格式
bean xml檔案用於定義spring容器需要管理的bean,常見的格式如下:
beans是根元素,下面可以包含任意數量的import、bean、alias元素,下面我們對每個元素進行詳解。
bean元素
用來定義一個bean物件。
格式
bean名稱
每個bean都有一個名稱,叫做bean名稱,bean名稱在一個spring容器中必須唯一,否則會報錯,透過bean名稱可以從spring容器獲取對應的bean物件。
bean別名
先來說一下什麼是別名?
相當於人的外號一樣,一個人可能有很多外號,當別人喊這個人的名稱或者外號的時候,都可以找到這個人。那麼bean也一樣,也可以給bean起幾個外號,這個外號在spring中叫做bean的別名,spring容器允許使用者透過名稱或者別名獲取對應的bean物件。
bean名稱別名定義規則
名稱和別名可以透過bean元素中的id和name來定義,具體定義規則如下::
-
當id存在的時候,不管name有沒有,取id為bean的名稱
-
當id不存在,此時需要看name,name的值可以透過,;或者空格分割,最後會按照分隔符得到一個String陣列,陣列的第一個元素作為bean的名稱,其他的作為bean的別名
-
當id和name都存在的時候,id為bean名稱,name用來定義多個別名
-
當id和name都不指定的時候,bean名稱自動生成,生成規則下面詳細說明
案例
下面演示一下bean名稱和別名的各種寫法。
我們來寫個java來輸出上面所有bean的名稱和其別名,如下:
上面有2個新的方法:
getAliases:透過bean名稱獲取這個bean的所有別名
getBeanDefinitionNames:返回spring容器中定義的所有bean的名稱
執行輸出:
id和name都未指定
當id和name都未指定的時候,bean的名稱和別名又是什麼呢?此時由spring自動生成,bean名稱為:
上面的編號是從0開始的,同種型別的沒有指定名稱的依次遞增。
如: xinyang/
下面定義了2個UserModel和2個String型別的bean,這些bean都沒有指定id和name。
我們再次執行一下上面Client類的main方法,輸出:
注意看一下上面最後4行的輸出,bean名稱和別名都是自動生成的,未指定id和name的bean物件,第一個會有別名,別名為完整的類名。bean名稱為完整類名#編號。
alias元素
alias元素也可以用來給某個bean定義別名,語法:
如:
上面第一行透過bean元素定義了一個名稱為user6的UserModel物件,後面2行給user6這個bean定義了2個別名,分別是user6_1和user6_2。
執行Client,會輸出一行:
import元素 puyang/
當我們的系統比較大的時候,會分成很多模組,每個模組會對應一個bean xml檔案,我們可以在一個總的bean xml中對其他bean xml進行彙總,相當於把多個bean xml的內容合併到一個裡面了,可以透過import元素引入其他bean配置檔案。
語法:
如:
總結
本文主要介紹了xml bean的定義,名稱和別名的使用,透過import元素引入外部配置檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2730700/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring Bean 定義繼承SpringBean繼承
- Spring Bean 詳解SpringBean
- 面向切面的Spring(二) xml中定義aopSpringXML
- Spring中bean的含義SpringBean
- 「Spring認證」Spring Bean 定義教學SpringBean
- spring bean定義與載入方式SpringBean
- Spring核心——Bean的定義與控制SpringBean
- Java Spring Beans.xml裡的Bean定義是如何被解析出來的JavaSpringBeanXML
- 【Spring】BeanFactory 解析 bean 詳解SpringBean
- 第三講:configuration 中 xml 檔案詳解XML
- 詳解Spring中Bean的作用域與生命週期SpringBean
- XML Schema(XSD)詳解:定義 XML 文件結構合法性的完整指南XML
- Spring系列第十四講 單例bean中使用多例bean,你未必會玩?Spring單例Bean
- XML Schema 複雜元素型別詳解:定義及示例解析XML型別
- spring中bean.xml的http://www.springframework.org/schema/bean報錯SpringBeanXMLHTTPFramework
- Spring-bean作用域scope詳解SpringBean
- spring xml配置標籤詳解SpringXML
- Spring系列第六講 玩轉bean scope,避免跳坑裡!SpringBean
- Spring-Context之四:Spring容器及bean的定義SpringContextBean
- Spring 定時器的使用—Xml、Annotation、自定義Spring定時器XML
- Spring 定時器的使用---Xml、Annotation、自定義Spring定時器XML
- Spring原始碼系列(一)--詳細介紹bean元件Spring原始碼Bean元件
- Spring系列第十一講 bean中的autowire-candidate又是幹什麼的?SpringBean
- Spring系列.Bean簡介SpringBean
- XML中的DTD文件型別定義XML型別
- Spring裡面xml檔案中bean的依賴和繼承SpringXMLBean繼承
- Spring框架系列(二)之Bean的註解管理Spring框架Bean
- python類定義的講解Python
- Spring基礎使用(三)-------XML定義AOP的使用SpringXML
- JavaScript 常量定義詳解JavaScript
- Spring中Bean的例項化詳細流程SpringBean
- Spring中Bean及@Bean的理解SpringBean
- spring上 -基於Xml配置bean筆記SpringXMLBean筆記
- Spring系列第十三講 使用繼承簡化bean配置(abstract & parent)Spring繼承Bean
- Spring系列第十二講 lazy-init:bean延遲初始化SpringBean
- Spring(三):IoC容器裝配Bean(xml配置方式和註解方式)SpringBeanXML
- Maven系列1--settings.xml 配置詳解MavenXML
- Spring中的BeanSpringBean