1、p:命名空间

引入命名空间:xmlns:p="http://www.springframework.org/schema/p"

配置举例:

<?xml version="1.0" encoding="utf-8"?>
<!-- 指定Spring配置文件的根元素和Schema
并导入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-4.0.xsd"> <!-- 配置chinese实例,其实现类是Chinese -->
<bean id="chinese" class="com.lfy.bean.Chinese"
p:age="29" p:axe-ref="stoneAxe"/> <bean id="steelAxe" class="com.lfy.impl.SteelAxe"/>
<bean id="stoneAxe" class="com.lfy.impl.StoneAxe"/>
</beans>

总结:p:主要用于设值注入,如果某个属性是其他bean的引用,则需要在对应属性名后追加“-ref”,如上面的axe是对其他bean的引用。由也引发一个要注意的问题,如果属性名称本身就以-ref结尾,并且它的值不是对其他bean的引用,这时候使用p:标签就要注意了。

2、c:命名空间

引入命名空间:xmlns:c="http://www.springframework.org/schema/c"

配置举例:

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean id="chinese" class="org.crazyit.app.service.impl.Chinese"
c:axe-ref="steelAxe" c:age="29"/> <bean id="chinese2" class="org.crazyit.app.service.impl.Chinese"
c:_0-ref="steelAxe" c:_1="29"/> <bean id="stoneAxe" class="com.lfy.impl.StoneAxe"/>
<bean id="steelAxe" class="com.lfy.impl.SteelAxe"/>
</beans>

总结:c:主要用于构造注入,如果某个属性是其他bean的引用,则需要在对应属性名后追加“-ref”,如上面的axe是对其他bean的引用。c:_N中的N代表第N+1个参数。

3、util:命名空间

引入命名空间:xmlns:util="http://www.springframework.org/schema/util"

导入语义约束:

http://www.springframework.org/schema/util
          http://www.springframework.org/schema/util/spring-util-4.0.xsd

util:提供的元素如下

constant:该元素用于获取指定类的静态Field的值,是FieldRetrievingFactoryBean的简化配置。

property-path:该元素用于获取指定对象的getter方法的返回值。它是PropertyPathFactoryBean的简化配置。

list:该元素用于定义一个List bean,支持使用<value.../>、<ref.../>、<bean.../>等子元素来定义List集合元素。使用该标签支持如下3个属性:

id:该属性指定定义一个名为id的List bean实例。

list-calss:该属性指定spring使用哪个List实现类来创建bean实例。默认使用ArrayList作为实现类。

scope:指定该List bean实例的作用域。

set:该元素用于定义一个Set bean,支持使用<value.../>、<ref.../>、<bean.../>等子元素来定义Set集合元素。使用该标签支持如下3个属性:

id:该属性指定定义一个名为id的Set bean实例。

set-calss:该属性指定spring使用哪个Set实现类来创建bean实例。默认使用HashSet作为实现类。

scope:指定该Set bean实例的作用域。

map:该元素用于定义一个Map bean,支持使用<entry.../>来定义Map的key-value对。使用该标签支持如下3个属性:

id:该属性指定定义一个名为id的Map bean实例。

map-calss:该属性指定spring使用哪个Map实现类来创建bean实例。默认使用HashMap作为实现类。

scope:指定该Map bean实例的作用域。

properties:该元素用于加载一份资源文件,并根据加载的资源文件创建一个Properties bean实例。使用该标签支持如下3个属性:

id:该属性指定定义一个名为id的Properties bean实例。

localtion:该属性指定资源文件的位置。

scope:指定该Properties bean实例的作用域。

举个例子:

<?xml version="1.0" encoding="utf-8"?>
<!-- 指定Spring配置文件的根元素和Schema
导入p:命名空间和util:命名空间的元素 -->
<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"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<!-- 配置chinese实例,其实现类是Chinese -->
<bean id="chinese" class="com.lfy.impl.Chinese"
p:age-ref="chin.age" p:axe-ref="stoneAxe"
p:schools-ref="chin.schools"
p:axes-ref="chin.axes"
p:scores-ref="chin.scores"/>
<!-- 使用util:constant将指定类的静态Field定义成容器中的Bean -->
<util:constant id="chin.age" static-field=
"java.sql.Connection.TRANSACTION_SERIALIZABLE"/>
<!-- 使用util.properties加载指定资源文件 -->
<util:properties id="confTest"
location="classpath:test_zh_CN.properties"/>
<!-- 使用util:list定义一个List集合,指定使用LinkedList作为实现类,
如果不指定默认使用ArrayList作为实现类 -->
<util:list id="chin.schools" list-class="java.util.LinkedList">
<!-- 每个value、ref、bean...配置一个List元素 -->
<value>小学</value>
<value>中学</value>
<value>大学</value>
</util:list>
<!-- 使用util:set定义一个Set集合,指定使用HashSet作为实现类,
如果不指定默认使用HashSet作为实现类-->
<util:set id="chin.axes" set-class="java.util.HashSet">
<!-- 每个value、ref、bean...配置一个Set元素 -->
<value>字符串</value>
<bean class="com.lfy.impl.SteelAxe"/>
<ref bean="stoneAxe"/>
</util:set>
<!-- 使用util:map定义一个Map集合,指定使用TreeMap作为实现类,
如果不指定默认使用HashMap作为实现类 -->
<util:map id="chin.scores" map-class="java.util.TreeMap">
<entry key="数学" value="87"/>
<entry key="英语" value="89"/>
<entry key="语文" value="82"/>
</util:map>
<!-- 配置steelAxe实例,其实现类是SteelAxe -->
<bean id="steelAxe" class="com.lfy.impl.SteelAxe"/>
<!-- 配置stoneAxe实例,其实现类是StoneAxe -->
<bean id="stoneAxe" class="com.lfy.impl.StoneAxe"/>
</beans>

spring-第十篇之XML Schema的简化配置,p、c、util命名空间的更多相关文章

  1. 7 -- Spring的基本用法 -- 11... 基于XML Schema的简化配置方式

    7.11 基于XML Schema的简化配置方式 Spring允许使用基于XML Schema的配置方式来简化Spring配置文件. 7.11.1 使用p:命名空间简化配置 p:命名空间不需要特定的S ...

  2. spring bean的介绍以及xml和注解的配置方法

    5.Bean 下边我们来了解一下Bean的: Bean的作用域Bean的生命周期Bean的自动装配Resources和ResourceLoader 5.1Bean容器的初始化 Bean容器的初始化 两 ...

  3. Spring第八篇【XML、注解实现事务控制】

    前言 本博文主要讲解Spring的事务控制,如何使用Spring来对程序进行事务控制-. 一般地,我们事务控制都是在service层做的..为什么是在service层而不是在dao层呢??有没有这样的 ...

  4. Spring第十篇—举例实现AOP

    简述AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封 ...

  5. 十五天精通WCF——第十天 学会用SvcConfigEditor来简化配置

    我们在玩wcf项目的时候,都是自己手工编写system.serviceModel下面的配置,虽然在webconfig中做wcf的服务配置的时候,vs提供大多 数的代码提示,但对于不太熟悉服务配置的小鸟 ...

  6. [转]十五天精通WCF——第十天 学会用SvcConfigEditor来简化配置

    我们在玩wcf项目的时候,都是自己手工编写system.serviceModel下面的配置,虽然在webconfig中做wcf的服务配置的时候,vs提供大多 数的代码提示,但对于不太熟悉服务配置的小鸟 ...

  7. 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  8. Spring可扩展的XML Schema机制

    可扩展的XML Schema机制 从Spring2.0开始,Spring提供了XML Schema可扩展机制,用户可以自定义XML Schema文件,并自定义XML Bean解析器,并集成到Sprin ...

  9. 死磕Spring之IoC篇 - 深入了解Spring IoC(面试题)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

随机推荐

  1. 03-CSS颜色、文本、字体、边框、背景

    # Css颜色,文本字体 ## css颜色表示法1.颜色名表示,比如:red 红色,gold 金色 2.16进制数值表示,比如:#ff0000 表示红色,这种可以简写成 #f00 3.RGB颜色: 红 ...

  2. xps9560黑苹果展示

    花费了一些时间来安装黑苹果 - - .,  展示一波 更换了DW1820a无线网卡,花费70+ 手上这台笔记本,在安装黑苹果的时候基本没遇见太大的问题,一路顺风顺水. 桌面,程序坞调小放在左侧   极 ...

  3. rabbitma客户端

    知道答案了,原因是重连的时候,每次重连都创建了一个新的线程,然后有信号的时候,每个线程都连接到rabbitMq服务器上去,导致了同一个IP通过不同端口链接上了服务器,出现了多个channel,而发多次 ...

  4. CSS3属性之 target伪类实现Tab切换效果

    CSS3 :target伪类用来改变页面中锚链接URL所指向的ID样式 代码示例: <!DOCTYPE html> <html lang="en"> < ...

  5. 前端每日实战:21# 视频演示如何用纯 CSS 创作文本滑动特效的 UI 界面

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/QrxxaW 可交互视频教程 此视频 ...

  6. [BZOJ] 书堆

    问题描述 蚂蚁是勤劳的动物,他们喜欢挑战极限?现在他们迎来了一个难题!蚂蚁居住在图书馆里,图书馆里有大量的书籍.书是形状大小质量都一样的矩形.蚂蚁要把这些书摆在水平桌子的边緣.蚂蚁喜欢整洁的布置,所以 ...

  7. LeetCode--046--全排列(java)

    给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1 ...

  8. Page.after

    解释: Page.after可以增加Page级的切面,触发的时机是在所拦截的对应生命周期方法执行之后,也可以拦截所有页面上发生的事件(对于要拦截的事件,在swan文件上必须显示绑定了相应事件). 方法 ...

  9. Codeforces 846F - Random Query

    原题链接:http://codeforces.com/contest/846/problem/F 题意:给一个数列,任意取区间[l, r],问区间内不同数字的个数的期望是多少. 思路: 对于第i个数a ...

  10. Python_002(基础知识)

    1.格式化输出 %s:字符串的占位符,可以放置任何内容(数字) 代码展示:%去除法 admin_input1 = input("请输入用户名:") pass_input = inp ...