0

让我从几个事实开始:

正如这里所证明的, SimpleDateFormat不是线程安全的: Andy Grove 的博客:SimpleDateFormat 和线程安全

当您想要将作为请求参数的字符串转换为其他对象(如 java.util.Date)时,您可以使用Java Beans 的属性编辑器支持

对于 java.util.Date,Spring 提供了一个为您进行转换的类:CustomDateEditor

该类的构造函数需要 DateFormat 作为第一个参数。因此,即使每个请求都会注册自定义属性编辑器:按照此处的建议注入 SimpleDateFormat(DateFormat 的唯一标准实现) (请向下滚动或使用浏览器搜索 SimpleD...),您会遇到陷阱.

什么是线程安全的解决方案?

4

1 回答 1

1

用 配置您的 SimpleFormatDate ,每个请求都会实例化scope="request"一个新的实例。SimpleDateFormat

<bean id="simpleDateFormat" class="java.text.SimpleDateFormat" scope="request">
  <constructor-arg value="dd-MM-yyyy"/>
</bean>

注意:您可能需要使用代理对其进行配置

<beans
  xmlns:aop="http://www.springframework.org/schema/aop"
  ...
  xsi:schemaLocation="...
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

  <bean id="simpleDateFormat" class="java.text.SimpleDateFormat" scope="request">
    <constructor-arg value="dd-MM-yyyy"/>
    <aop:scoped-proxy />
  </bean>
  ...
于 2013-09-04T18:13:06.770 回答