Spring中的p标签

Spring的p标签是基于XML Schema的配置方式,目的是为了简化配置方式。

在XML文件头部添加xmlns:p="http://www.springframework.org/schema/p"即可使用。

例如:

类Student

  1. public class Student
  2. {
  3. private int id;
  4. private Course course;
  5. public void setId(int id)
  6. {
  7. this.id=id;
  8. }
  9. public void setTool(Course course)
  10. {
  11. this.course=course;
  12. }
  13. ...
  14. }

原始的bean配置为

  1. <?xml version="1.0" encoding="GBK"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  6. <bean id="student" class="com.myclass.Student">
  7. <property name="id" value="1"/>
  8. <property name="course" ref="course"/>
  9. </bean>
  10. </beans>

使用P标签的配置为

  1. <?xml version="1.0" encoding="GBK"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  xmlns:p="http://www.springframework.org/schema/p"  
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  7. <bean id="student" class="com.myclass.Student" p:id="21" p:course-ref="tool"/>
  8. </beans>

tool之后添加"-ref"后缀表示是对另外一个bean的引用。

另外:

给XML配置文件"减肥"的另一个选择就是使用p名称空间,从 2.0开始,Spring支持使用名称空间的可扩展配置格式。这些名称空间都是基于一种XML Schema定义。事实上,我们所看到的所有bean的配置格式都是基于一个 XML Schema文档。

特 定的名称空间并不需要定义在一个XSD文件中,它只在Spring内核中存在。我们所说的p名称空间就是这样,它不需要一个schema定义,与我们前面 采用<property/>元素定义bean的属性不同的是,当我们采用了p名称空间,我们就可以在bean元素中使用属性 (attribute)来描述bean的property值。

下面的两段XML配置文件中都是用来定义同一个bean:一个采用的是标准的XML格式,一个是采用p名称空间。

<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-2.5.xsd">
 
  <bean name="classic" class="com.example.ExampleBean">
      <property name="email" value="[email protected]/>
  </bean>
 
  <bean name="p-namespace" class="com.example.ExampleBean"
        p:email="[email protected]"/>
</beans>

上面的bean定义中,我们采用p名称空间的方式包含了一个叫email的属性,而Spring会知道我们的bean包含了一个属性(property)
定义。我们前面说了,p名称空间是不需要schema定义的,因此属性(attribute)的名字就是你bean的property的名字。

This next example includes two more bean definitions that both have a reference to another bean:

下面的例子包含了两个bean定义,它们都引用了另一个bean

<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-2.5.xsd">
 
  <bean name="john-classic" class="com.example.Person">
      <property name="name" value="John Doe"/>
      <property name="spouse" ref="jane"/>
  </bean>

<bean name="john-modern"
      class="com.example.Person"
      p:name="John Doe"
      p:spouse-ref="jane"/>

<bean name="jane" class="com.example.Person">
      <property name="name" value="Jane Doe"/>
  </bean>
</beans>
As
you can see, this example doesn‘t only include a property value using
the p-namespace, but also uses a special format to declare property
references. Whereas the first bean definition uses <property
name="spouse" ref="jane"/> to create a reference from bean john to
bean jane, the second bean definition uses p:spouse-ref="jane" as an
attribute to do the exact same thing. In this case ‘spouse‘ is the
property name whereas the ‘-ref‘ part indicates that this is not a
straight value but rather a reference to another bean.

上面的例子不仅使用
p名称空间包含了一个属性(property)值,而且使用了一个特殊的格式声明了一个属性引用。在第一个bean定义中使用了<property
name="spouse"
ref="jane"/>来建立beanjohn到beanjane的引用,而第二个bean定义则采用p:spouse-ref="jane"属
性(attribute)的方式达到了同样的目的。在这个例子中,"spouse"是属性(property)名,而"-ref“则用来说明该属性不是一
个具体的值而是对另外一个bean的引用。

注意
需要注意的是,p名称空间没有标准的XML格式定义灵活,比如说,bean的属
性名是以Ref结尾的,那么采用p名称空间定义就会导致冲突,而采用标准的XML格式定义则不会出现这种问题。这里我们提醒大家在项目中还是仔细权衡来决
定到底采用那种方式,同时也可以在团队成员都理解不同的定义方式的基础上,在项目中根据需要同时选择三种定义方式。

时间: 2024-10-13 03:57:38

Spring中的p标签的相关文章

Spring中的p标签(转)good

Spring的p标签是基于XML Schema的配置方式,目的是为了简化配置方式. 在XML文件头部添加xmlns:p="http://www.springframework.org/schema/p"即可使用.(在Spring之后的版本中,p标签已经包含到namespace "http://www.w3.org/2000/xmlns/"中了) 例如: 类Person public class Person { private int age; private To

[转]Spring 中的p标签

spring的bean配置文件中p:代表什么 <bean id="daoTemplate" abstract="true" lazy-init="true" p:sessionFactory-ref="sessionFactory"/> p表示对该bean里面的属性进行注入,格式为p:属性名=注入的对象效果与在bean里面使用<property>标签一样 Spring2.0中还有一个非常实用的解析 器,

Spring中的p标签(转)

Spring的p标签是基于XML Schema的配置方式,目的是为了简化配置方式. 在XML文件头部添加xmlns:p="http://www.springframework.org/schema/p"即可使用. 例如: 类Person [java] view plaincopy public class Person { private int age; private Tool tool; public void setAge(int age) { this.age=age; }

spring中&lt;bean&gt;中parent标签的使用

简介:spring 中parent标签是指:某个<bean>的父类.这个类可以覆盖parent的属性, 代码如下: Parent类的代码如下: package com.timo.domain; public class Parent { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } Child的代码如下:

Spring中List、Set、Map、数组注入方式中标签的使用

在这里不多说,直接进入正题,在使用Spring时,如果对象实例含有数据或集合属性时,那我们该如何去配置Spring.xml呢?我们就需要property下的子元素list,set,map等子元素.示例为: <bean> <property> <list>--</list> or <set>--</set> or <map>--</map> </property> </bean> [转载使

Spring MVC 中些注入标签

1.@Controller @Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定,如下 : 方法一: @Controller public class TestController {}  方法二:            @Controller("tmpController") public class TestController {} 2.@RequestMapping  使用 @RequestMapp

Spring中@Transactional用法深度分析之一

引言: 在Spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项的使用. 1.  @Transactional的定义 Spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题.在现实中,实际的问题往往比我们预期的要复杂很多,这就要求对@Transactional有深入的了解,以来应对复杂问题.

Spring中事务管理

1.什么是事务? 事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务具有四大特性ACID 1)原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不被执行.如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换:如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换. 2)一致性(Consistency):事务的执行使得数据库从一种正确状态转换成另一种正确状态.例如对于银行转账事务,不管事务

Spring中&lt;ref local=&quot;&quot;/&gt;与&lt;ref bean=&quot;&quot;/&gt;区别

小 Spring中<ref local=""/>与<ref bean=""/>区别 (2011-03-19 19:21:58) 转载▼ 标签: 杂谈   <ref local="xx"/>  用"local"属性指定目标其实是指向同一文件内对应"id"属性值为此"local"值的索引"local"属性的值必须和目标bean的id属性