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解决字典中的值是列表问题的方法
Mar 04 Python
利用Python绘制数据的瀑布图的教程
Apr 07 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
windows下python安装小白入门教程
Sep 18 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
python构建指数平滑预测模型示例
Nov 21 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
Python如何对齐字符串
Jul 30 Python
python 如何停止一个死循环的线程
Nov 24 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
python解析xml文件实例分享
2013/12/04 Python
python简单读取大文件的方法
2016/07/01 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Python操作MySQL数据库的方法
2018/06/20 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
Python continue语句实例用法
2020/02/06 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
大学生职业生涯规划书范文
2014/01/14 职场文书
保险公司晨会主持词
2014/03/22 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
优秀大学生申请书
2019/06/24 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript