Spring采用p名称空间注入的方式

xiaoxiao2021-02-28  123

从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格式定义则不会出现这种问题。


转载请注明原文地址: https://www.6miu.com/read-31208.html

最新回复(0)