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获取当前时间的方法
Jan 14 Python
Python的函数嵌套的使用方法
Jan 24 Python
Python socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
python基础教程项目二之画幅好画
Apr 02 Python
如何利用python查找电脑文件
Apr 27 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
python+pygame实现坦克大战
Sep 10 Python
python修改文件内容的3种方法详解
Nov 15 Python
Django Path转换器自定义及正则代码实例
May 29 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
用ldap作为django后端用户登录验证的实现
Dec 07 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开发中四种查询返回结果分析
2011/01/02 PHP
php HandlerSocket的使用
2011/05/02 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
js实现缓动动画
2020/11/25 Javascript
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
python tkinter组件使用详解
2019/09/16 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
New delete 与malloc free 的联系与区别
2013/02/04 面试题
五年级数学教学反思
2014/02/11 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书