更新時間: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)簽如下:
<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ù),虛擬機(jī)參數(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ù)某塊進(jìn)行拆分,拆分后,最終通過<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中維護(hù)著一個名為aliasMap的Map<String,String>集合,存儲別名和beanName
之間的映射關(guān)系。
Spring的自定義標(biāo)簽需要引入外部的命名空間,并為外部的命名空間指定前綴,使用 <前綴:標(biāo)簽> 形式的標(biāo)簽,稱 之為自定義標(biāo)簽,自定義標(biāo)簽的解析流程也是 Spring xml擴(kuò)展點方式之一。
<!--默認(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"/>