首頁技術(shù)文章正文

Spring的xml標(biāo)簽配置:默認(rèn)標(biāo)簽和自定義標(biāo)簽

更新時間:2022-10-27 來源:黑馬程序員 瀏覽量:

Spring 的 xml 標(biāo)簽大體上分為兩類,一種是默認(rèn)標(biāo)簽,一種是自定義標(biāo)簽。默認(rèn)標(biāo)簽不用額外導(dǎo)入其他命名空間約束的標(biāo)簽,例如 <bean>標(biāo)簽。自定義標(biāo)簽需要額外引入其他命名空間約束,并通過前綴引用的標(biāo)簽,例如<context:propertyplaceholder/>標(biāo)簽。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

該命名空間約束下的默認(rèn)標(biāo)簽如下:

命名空間的默認(rèn)標(biāo)簽

<beans>標(biāo)簽,除了經(jīng)常用的做為根標(biāo)簽外,還可以嵌套在根標(biāo)簽內(nèi),使用profile屬性切換開發(fā)環(huán)境。

<!-- 配置測試環(huán)境下,需要加載的Bean實例 -->
<beans profile="test">

</beans>
<!-- 配置開發(fā)環(huán)境下,需要加載的Bean實例 -->
<beans profile="dev">
  
</beans>

指定被激活的環(huán)境可以使用以下兩種方式:

1.使用命令行動態(tài)參數(shù),虛擬機參數(shù)位置加載 -Dspring.profiles.active=test

2.使用代碼的方式設(shè)置環(huán)境變量 System.setProperty("spring.profiles.active","test")

<import>標(biāo)簽,用于導(dǎo)入其他配置文件,項目變大后,就會導(dǎo)致一個配置文件內(nèi)容過多,可以將一個配置文件根 據(jù)業(yè)務(wù)某塊進行拆分,拆分后,最終通過<import>標(biāo)簽導(dǎo)入到一個主配置文件中,項目加載主配置文件就連同<import>導(dǎo)入的文件一并加載了。

<!--導(dǎo)入用戶模塊配置文件-->
<import resource="classpath:UserModuleApplicationContext.xml"/>

<!--導(dǎo)入商品模塊配置文件-->
<import resource="classpath:ProductModuleApplicationContext.xml"/>

<alias>標(biāo)簽是為某個Bean添加別名,與在標(biāo)簽上使用name屬性添加別名的方式一樣,我們?yōu)閁serServiceImpl指定四個別名:aaa、bbb、xxx、yyy。

<!--配置UserService-->
<bean id="userService" name="aaa,bbb" class="com.itheima.service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"/>
</bean>
<!--指定別名-->
<alias name="userService" alias="xxx"/>
<alias name="userService" alias="yyy"/>

斷點調(diào)試,在beanFactory中維護著一個名為aliasMap的Map<String,String>集合,存儲別名和beanName 之間的映射關(guān)系。
1666838887026_82.png

Spring的自定義標(biāo)簽需要引入外部的命名空間,并為外部的命名空間指定前綴,使用 <前綴:標(biāo)簽> 形式的標(biāo)簽,稱 之為自定義標(biāo)簽,自定義標(biāo)簽的解析流程也是 Spring xml擴展點方式之一。

<!--默認(rèn)標(biāo)簽-->
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
<!--自定義標(biāo)簽-->
<context:property-placeholder/>
<mvc:annotation-driven/>
<dubbo:application name="application"/>






分享到:
在線咨詢 我要報名
和我們在線交談!