@Value用于在Spring 3中初始化java.util.Date

时间:2014-05-27 16:38:16

标签: java spring spring-mvc autowired spring-3

我有一个Employee类,其中java.util.Date类型的成员变量如下:

@Component(value="employeeBean")
public class Employee {
// How to initialize this using @Value ???
private Date dateOfJoining;
}

使用application context xml可以使用此功能:

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

<bean id="employeeBean" class="com.Employee">
    <property name="dateOfJoining">
        <bean factory-bean="dateFormat" factory-method="parse">
            <constructor-arg value="2010-01-31" />
        </bean>
    </property>
</bean>

但我想使用Annotations来做到这一点。请指教。

4 个答案:

答案 0 :(得分:2)

@Value("#{dateFormat.parse('2010-01-31')}")
private Date dateOfJoining;

您可以在#{}注释中使用@Value附带的SpEL

答案 1 :(得分:1)

@Value($ {new java.text.SimpleDateFormat(\“yyyyMMdd \”)。parse(\“$ {PROP_DATE} \”)}) private Date dateOfJoining;

答案 2 :(得分:0)

添加导入:

对于DateTimeFormat

import org.springframework.format.annotation.DateTimeFormat;

有关更多类型的验证,例如:NotNull

你可以使用validation-api jar,包括刚刚导入的jar:

import javax.validation.constraints.NotNull`;

在课堂上,在定义变量时:

@DateTimeFormat(pattern="MM/dd/yyyy")
@NotNull
private Date date;

答案 3 :(得分:0)

如果这可以帮助其他人:

    @Value("#{new java.text.SimpleDateFormat('yyyy-MM-dd').parse('2010-01-31')}")
    private Date dateOfJoining;

或者,如果日期字符串和日期格式存储在属性文件中:

应用程序属性:

date.of.joining=2010-01-31
date.of.joining.format=yyyy-MM-dd

Java 类:

    @Value("#{new java.text.SimpleDateFormat('${date.of.joining.format}').parse('${date.of.joining.format}')}")
    private Date dateOfJoining;