从Spring 2.0开始,就支持使用名称空间的可扩展配置格式。这些名称空间都是基于一种XML Schema定义。
目的:是为了避免使用<property>注入使用到太多的尖括号,达到简化配置的目的。
命名空间P的使用方法:
1、引入Schema URI:http://www.springframework.org/schema/p
2、引入属性值和属性引用不同
引入属性值:p:属性名=" 属性值 " 例如:p:userName="小王"
引入引用: p:属性名-ref=" 属性值 " 例如:p:userDao-ref="userDao"
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="com.test.spring.aop.User"></bean> <bean id="userDao" class="com.test.spring.aop.UserDao"></bean> <bean id="userService" class="com.test.spring.aop.UserService"> <property name="userName" value="小王"></property> <property name="userDao" ref="userDao"></property> </bean> <!--<bean id="userService" class="com.test.spring.aop.UserService" p:userName="小王" p:userDao-ref="userDao"></bean>--> </beans>
举例说明: <bean name="jike" class="com.pers.Person"> <property name="name" value="jike li"/> <property name="easy" ref="mike"/> </bean> <bean name="kiss" class="com.pers.Person" p:name="kiss wang" p:spouse-ref="mike"/>
<bean name="mike" class="com.pers.Person"> <property name="name" value="mike zhang"/> </bean>第一个bean定义中使用了
<property name="easy" ref="mike"/>
来建立bean
jike
到bean mike
的引用,而第二个bean定义则采用
p:spouse-ref="mike"
属性(attribute)的方式达到了同样的目的。在这个例子中,"
spouse
"是属性(property)名,而"
-ref
“则用来说明该属性不是一个具体的值而是对另外一个bean的引用。
我们可以看出:p名称空间没有标准的XML格式定义灵活,比如说,bean的属性名是以Ref
结尾的,那么采用p名称空间定义就会导致冲突,而采用标准的XML格式定义则不会出现这种问题。