spring-第十篇之XML Schema的简化配置,p、c、util命名空间
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命名空间的更多相关文章
- 7 -- Spring的基本用法 -- 11... 基于XML Schema的简化配置方式
7.11 基于XML Schema的简化配置方式 Spring允许使用基于XML Schema的配置方式来简化Spring配置文件. 7.11.1 使用p:命名空间简化配置 p:命名空间不需要特定的S ...
- spring bean的介绍以及xml和注解的配置方法
5.Bean 下边我们来了解一下Bean的: Bean的作用域Bean的生命周期Bean的自动装配Resources和ResourceLoader 5.1Bean容器的初始化 Bean容器的初始化 两 ...
- Spring第八篇【XML、注解实现事务控制】
前言 本博文主要讲解Spring的事务控制,如何使用Spring来对程序进行事务控制-. 一般地,我们事务控制都是在service层做的..为什么是在service层而不是在dao层呢??有没有这样的 ...
- Spring第十篇—举例实现AOP
简述AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封 ...
- 十五天精通WCF——第十天 学会用SvcConfigEditor来简化配置
我们在玩wcf项目的时候,都是自己手工编写system.serviceModel下面的配置,虽然在webconfig中做wcf的服务配置的时候,vs提供大多 数的代码提示,但对于不太熟悉服务配置的小鸟 ...
- [转]十五天精通WCF——第十天 学会用SvcConfigEditor来简化配置
我们在玩wcf项目的时候,都是自己手工编写system.serviceModel下面的配置,虽然在webconfig中做wcf的服务配置的时候,vs提供大多 数的代码提示,但对于不太熟悉服务配置的小鸟 ...
- 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- Spring可扩展的XML Schema机制
可扩展的XML Schema机制 从Spring2.0开始,Spring提供了XML Schema可扩展机制,用户可以自定义XML Schema文件,并自定义XML Bean解析器,并集成到Sprin ...
- 死磕Spring之IoC篇 - 深入了解Spring IoC(面试题)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
随机推荐
- 实体模型集合对象转换为VO对象集合
例如: 数据库中查出来的数据为 List<RptDayMonthTarget> List<RptDayMonthTarget> list = targetService.sel ...
- slot-scope 插槽 的使用 ——'<template slot-scope="page">'
slot-scope="page"slot-scope 是一个插槽,拿外面的数据,可以获取当前一行的数据page.row.pageId 拿到当前行数据的pageId注意:slot- ...
- WPF自定义样式篇-DataGrid
WPF自定义样式篇-DataGrid 先上效果图: 样式: <!--DataGrid样式--> <Style TargetType="DataGrid"& ...
- 安装Erlang使用RabbitMQ
首先登陆官网进行下载:https://www.erlang.org/downloads/20.3 本次下载的版本是20.3,rabbitmq准备使用3.7.17版本 现在开始安装 因为是使用c#语言, ...
- linux安装 inotify
[root@rsync-client-inotify ~]# yum install make gcc gcc-c++ [root@rsync-client-inotify ~]# wget http ...
- powerdesigner数据库设计
(1)创建物理数据模型 打开PowerDesigner,然后点击File-->New Model然后选择如下图所示的物理数据模型(物理数据模型的名字自己起,然后选择自己所使用的数据库即可) ( ...
- over partition by
参考资料: 1.https://www.cnblogs.com/cjm123/p/8033639.html
- RABBITMQ 协议 AMQP协议
https://baike.baidu.com/item/rabbitmq/9372144?fr=aladdin https://github.com/CopernicaMarketingSoftwa ...
- Flutter-網絡請求
Flutter 请求网络的三种方式 flutter 请求网络的方式有三种,分别是 Dart 原生的网络请求 HttpClient.第三方网络请求 http以及 Flutter 中的 Dio.我们可以比 ...
- GPS通讯 数据包解析
全球时区的划分: 每个时区跨15°经度.以0°经线为界向东向西各划出7.5°经度,作为0时区.即0时区的经度范围是7.5°W——7.5°E.从7.5°E与7.5°W分别向东.向西每15°经度划分为一个 ...