日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring配置文件中非bean标签的原理解析

發布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring配置文件中非bean标签的原理解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

在spring配置文件中,我們經常見到context:property-placeholder/context:component-scan/ 等常用但比較特殊的標簽。有時候我們會有疑問,這些標簽是如何被定義的,又是如何被解析的。下面我會通過跟蹤spring源碼的方式,分析其中的原理。由于本人時間有限,本文不是一次性完成,會隨著我的學習進度更新,本文也作為我個人學習筆記使用。(本文是以spring4.1.3版本為例) ####1.占位符

<context:property-placeholder/>

1)用法

最常用的用法就是作為加載數據庫連接配置文件(如:db.properties)的占位符。

<!-- 加載配置文件 --> <context:property-placeholder location="classpath:resource/*.properties" /> <!-- 數據庫連接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="driverClassName" value="${jdbc.driver}" /><property name="maxActive" value="10" /><property name="minIdle" value="5" /> </bean>

2)原理解析

第一步:我們先找到spring定義property-placeholder元素的XSD文檔。因為是context標簽命名空間所以該元素定義肯定實在spring的context包中。如下圖:

在此文檔中我找到了property-placeholder標簽的定義 (為了簡潔,下面代碼去掉了大部分注釋)

<xsd:element name="property-placeholder"><xsd:annotation><xsd:documentation><![CDATA[Activates replacement of ${...} placeholders by registering a...]]></xsd:documentation><xsd:appinfo><tool:annotation><tool:exports type="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"/></tool:annotation></xsd:appinfo></xsd:annotation><xsd:complexType><xsd:complexContent><xsd:extension base="propertyPlaceholder"><xsd:attribute name="system-properties-mode" default="ENVIRONMENT"><xsd:annotation><xsd:documentation><![CDATA[Controls how to resolve placeholders against...]]> </xsd:documentation></xsd:annotation><xsd:simpleType><xsd:restriction base="xsd:string"><xsd:enumeration value="ENVIRONMENT"/><xsd:enumeration value="NEVER"/><xsd:enumeration value="FALLBACK"/><xsd:enumeration value="OVERRIDE"/></xsd:restriction></xsd:simpleType></xsd:attribute></xsd:extension></xsd:complexContent></xsd:complexType></xsd:element>

第二部:由上面XSD文件中可以看出properties文件最終都被封裝成了org.springframework.context.support.PropertySourcesPlaceholderConfigurer返回。 下面我從ClassPathXmlApplicationContext類入手跟蹤,跟蹤到如下調用棧。

轉載于:https://my.oschina.net/mlh3823/blog/825033

總結

以上是生活随笔為你收集整理的spring配置文件中非bean标签的原理解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。