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中的Descriptor描述符类
Jun 14 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 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
zf框架的registry(注册表)使用示例
2014/03/13 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
Python使用getpass库读取密码的示例
2017/10/10 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Python如何实现线程间通信
2020/07/30 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
日期和时间问题
2015/01/04 面试题
优良学风班总结材料
2014/02/08 职场文书
协议书与合同的区别
2014/04/18 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
中国合伙人观后感
2015/06/02 职场文书
国家助学金受助感言
2015/08/01 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL