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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
详解python的ORM中Pony用法
Feb 09 Python
python+selenium打印当前页面的titl和url方法
Jun 22 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
linux中如何使用python3获取ip地址
Jul 15 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
关于numpy数组轴的使用详解
Dec 05 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
python中def是做什么的
Jun 10 Python
Python图片处理之图片裁剪教程
May 27 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 ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Python批量转换文件编码格式
2015/05/17 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
python跳出双层for循环的解决方法
2019/06/24 Python
对Django外键关系的描述
2019/07/26 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
SQL中where和having的区别
2012/06/17 面试题
教师网络培训感言
2014/03/09 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
Python实现科学占卜 让视频自动打码
2022/04/09 Python
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android