巧用spring配置常量

原创 2007年09月29日 18:45:00
 
巧用spring配置常量
--常量也可以DI
 
有一些常量数据类型,比如货币,省份,转帐类型,等等。我们程序里都是用他们的代码进行运算的,但在页面显示的时候只能用他的名称显示给用户看。
 
因此有下面特点:
1有键值对,
2不经常变化(支持偶尔有变化),
3常用在页面做下拉选择,
4在编辑页面的时候此选择项又必须默认选中,
5键值关系固定。
 
碰到这种情况,有很多解决方法。比如可以在页面硬编码,把每个常量一一在页面写死,这样做的后果是代码很多,如果多个页面都包含此常量那么增加了维护的难度,另外一种是使用<fmt:message/>+属性文件来处理,虽然有所改善,但不能使用<c:if>测试和比较。下面我推荐一种方法,希望能对大家有所帮助。实现步骤如下:
 
1、   写一个公用工具类,所有的属性通过Spring启动时候注入
public class MyConstantUtils {
 
         public static MyConstantUtils obj;
         public MyConstantUtils (String string) {
                   obj = this;        
         }
         /**
          * 货币类型键值对 Spring启动的时候注入
          */
         public Map currTypes;
         public Map getCurrTypes() {
                   return currTypes;
         }
         public void setCurrTypes(Map currTypes) {
                   this.currTypes = currTypes;
         }
       //其他常量……
}
2、   配置文件web-xxx.xml,建议用一个单独的文件来配置常量。
   <!--     在配置文件中配置常量       -->
   <bean id="currTypes" class="java.util.HashMap">
       <constructor-arg>
           <map>
              <entry key="USD">
                  <value>美元</value>
              </entry>
              <entry key="HKD">
                  <value>港元</value>
              </entry>
              <entry key="EUR">
                  <value>欧元</value>
              </entry>
              <entry key="JPY">
                  <value>日元</value>
              </entry>
              <entry key="AUD">
                  <value>AUD</value>
              </entry>
              <entry key="RMB">
                  <value>人民币</value>
              </entry>
           </map>
       </constructor-arg>
    </bean>
    <bean id="toolsUtils" class="com.xyz.util.MyConstantUtils ">
       <constructor-arg>
           <value>开始初始化工具类对象</value>
       </constructor-arg>
     <!--     将常量注入单例对象中       -->
       <property name="currTypes">
           <ref bean="currTypes"/>
       </property>
    </bean>
 
3、      在jsp中,由于我们用的是springMVC,一般定义一个包含一些常用标签的jsp,如文件taglib.jsp:
<!--   taglibs.jsp   -->
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<% request.setAttribute("MyConstantUtils",com.xyz.util.MyConstantUtils.obj); %>
 
在上面的jsp中顺便将我们的静态对象保存在request中,在其他jsp文件中include进来即可使用我们在配置文件中的常量,如下面:
<%@include file="taglibs.jsp"%>
………
<tr align="center">
                            <td height="30" align="left">
                            <div align="right">币种*</div>
                            </td>
                            <td width="78%" height="30" align="left">
<select name="currType">
    <c:forEach items="${MyConstantUtils.currTypes}"var="currType">
    <option value='<c:outvalue="${currType.key}"/>'<c:iftest='${currType.key == "RMB"}'>selected</c:if>><c:out
    value="${currType.value}"/></option>
    </c:forEach>
    </select>
</td>
</tr>
……………….
 
相对使用 <fmt:message/>+属性文件 有下面好处:
1、可以遍历所有的选项,也可以不需要遍历,即可只取出某一个。例如当在查询列表中从后台传来的是货币代码,那么直接取出显示:
<td><c:out value="${MyConstantUtils.currTypes[dep.currType]}"/></td>
 
2、回显时可以<c:if>测试被选中的选项,如上面的代码将 RMB改为变量即可
3、不需要专门的读取解析配置文件
4、类和jsp中都可以方便使用
5、可扩展性好,虽然是常量但也有可能变化,如增加一个新的货币的时候,只修改配置文件即可,jsp不用修改
6、使得jsp代码更加简洁
 
缺点时:不完全支持国际化
 

Spring 中简便配置系统常量

####????????? #??? USERNAME = apay #?? PASSWORD = epay_3V!LK5 #???? TYPE = 1A020205 #??KEY DESKEY = ...
  • wang0928007
  • wang0928007
  • 2012年01月04日 17:12
  • 4519

读取spring的配置来定义常量

问题背景 1、在spring配置中有一个【在线地址】的配置 2、有一个工具类,可以读取spring的配置 需求:将spring的配置定义为一个常量问题...
  • tel17666116556
  • tel17666116556
  • 2017年08月10日 11:49
  • 289

使用Spring实现属性文件给常量赋值

使用Spring实现属性文件给常量赋值
  • 5iasp
  • 5iasp
  • 2015年06月26日 17:19
  • 5779

spring引用配置常量文件的方法

这里location值为参数配置文件的位置,参数配置文件通常放在src目录下 配置文件为键值对格式 上述代码还解决了引用多个配置文件的问题,用通配符“*”...
  • sia185300
  • sia185300
  • 2016年09月19日 10:17
  • 242

Spring为属性注入某个类的常量或方法的返回值

spring提供了filed的值注入和method的返回值注入。 1、Field值的注入 filed值注入需要使用org.springframework.beans.factory.config....
  • viproc
  • viproc
  • 2012年05月31日 10:14
  • 2150

spring-如何给静态变量注入值

spring-如何给静态变量注入值
  • doctor_who2004
  • doctor_who2004
  • 2016年01月17日 16:09
  • 16524

SpringMVC通过注解@Value获取properties配置

SpringMVC中有两个xml配置文件:1、applicationContext.xml,这个是Spring的主配置文件,包括dao层service层的bean定义或扫描、数据源、事务等的配置信息。...
  • z100871519
  • z100871519
  • 2016年05月13日 11:28
  • 15487

SpringMvc从属性文件读取常量

SpringMvc从属性文件读取常量 源代码下载地址:http://www.zuidaima.com/share/1550463705844736.htm...
  • springmvc_springdata
  • springmvc_springdata
  • 2015年03月19日 09:57
  • 2451

SpringMVC中使用@Value给非String类型注入值

String类型的@Value注入方式 String类型的直接可以使用 @Value("陈婉清") private String name;非String类型的@Value注入方式报错类型 非St...
  • u010570551
  • u010570551
  • 2016年05月28日 16:00
  • 5077

用spring@Value注解实现常量功能

之前的博客中提到过如何通过 java.util.ResourceBundle 和 java.util.Properties 类通过读取 key-value文件的形式实现常量功能。其实 spring 已...
  • zhugeyangyang1994
  • zhugeyangyang1994
  • 2016年03月24日 16:23
  • 6575
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:巧用spring配置常量
举报原因:
原因补充:

(最多只允许输入30个字)