Spring实战之使用util:命名空间简化配置操作示例


Posted in Python onDecember 09, 2019

本文实例讲述了Spring使用util:命名空间简化配置操作。分享给大家供大家参考,具体如下:

一 配置

<?xml version="1.0" encoding="GBK"?>
<!-- 指定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="org.crazyit.app.service.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="org.crazyit.app.service.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="org.crazyit.app.service.impl.SteelAxe"/>
   <!-- 配置stoneAxe实例,其实现类是StoneAxe -->
   <bean id="stoneAxe" class="org.crazyit.app.service.impl.StoneAxe"/>
</beans>

二 接口

Axe

package org.crazyit.app.service;
public interface Axe
{
   // Axe接口里有个砍的方法
   public String chop();
}

Person

package org.crazyit.app.service;
public interface Person
{
   // 定义一个使用斧子的方法
   public void useAxe();
}

三 实现

Chinese

package org.crazyit.app.service.impl;
import java.util.*;
import org.crazyit.app.service.*;
public class Chinese implements Person
{
  private Axe axe;
  private int age;
  private List schools;
  private Map scores;
  private Set axes;
  // axe的setter方法
  public void setAxe(Axe axe)
  {
    this.axe = axe;
  }
  // age的setter方法
  public void setAge(int age)
  {
    this.age = age;
  }
  // schools的setter方法
  public void setSchools(List schools)
  {
    this.schools = schools;
  }
  // scores的setter方法
  public void setScores(Map scores)
  {
    this.scores = scores;
  }
  // axes的setter方法
  public void setAxes(Set axes)
  {
    this.axes = axes;
  }
  // 实现Person接口的useAxe()方法
  public void useAxe()
  {
    System.out.println(axe.chop());
    System.out.println("age属性值:" + age);
    System.out.println(schools);
    System.out.println(scores);
    System.out.println(axes);
  }
}

StoneAxe

package org.crazyit.app.service.impl;
import org.crazyit.app.service.*;
public class StoneAxe implements Axe
{
   public String chop()
   {
      return "石斧砍柴好慢";
   }
}

SteelAxe

package org.crazyit.app.service.impl;
import org.crazyit.app.service.*;
public class SteelAxe implements Axe
{
   public String chop()
   {
      return "钢斧砍柴真快";
   }
}

四 测试类

package lee;
import org.springframework.context.*;
import org.springframework.context.support.*;
import org.crazyit.app.service.*;
public class BeanTest
{
  public static void main(String[] args)
  {
    // 创建Spring容器
    ApplicationContext ctx = new
      ClassPathXmlApplicationContext("beans.xml");
    // 获取chinese实例
    Person p = ctx.getBean("chinese" , Person.class);
    // 调用useAxe()方法
    p.useAxe();
    System.out.println(ctx.getBean("confTest"));
  }
}

五 资源文件

a=\u8f7b\u91cf\u7ea7Java EE\u4f01\u4e1a\u5e94\u7528\u5b9e\u6218
b=\u75af\u72c2Java\u8bb2\u4e49

六 运行

石斧砍柴好慢
age属性值:8
[小学, 中学, 大学]
{数学=87, 英语=89, 语文=82}
[字符串, org.crazyit.app.service.impl.SteelAxe@eec5a4a,  org.crazyit.app.service.impl.StoneAxe@2b2948e2]
{b=疯狂Java讲义, a=轻量级Java EE企业应用实战}

希望本文所述对大家java程序设计有所帮助。

Python 相关文章推荐
Python面向对象编程基础解析(二)
Oct 26 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
通过python顺序修改文件名字的方法
Jul 11 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 #Python
Python二次规划和线性规划使用实例
Dec 09 #Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 #Python
如何将 awk 脚本移植到 Python
Dec 09 #Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 #Python
基于YUV 数据格式详解及python实现方式
Dec 09 #Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 #Python
You might like
PHP入门速成(2)
2006/10/09 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
js切换div css注意的细节
2012/12/10 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
解读ES6中class关键字
2017/11/20 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
python中class的定义及使用教程
2019/09/18 Python
企划专员岗位职责
2013/12/09 职场文书
经典商业广告词
2014/03/13 职场文书
小区推广策划方案
2014/06/06 职场文书
土地转让协议书
2014/09/27 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
财务工作检讨书
2014/10/29 职场文书
工作年限证明模板
2014/11/01 职场文书
2014年政教处工作总结
2014/12/20 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python