0
   <bean id="FileWriter" class="com.sample.FileWriter">
          <constructor-arg value="${path.to.output}"/>
          <constructor-arg value="${filename}"/>
   </bean>

我想使用spring从属性文件中传递带有今天日期的文件名,这样它就不会在类中进行硬编码。这可能吗?

我要在 F_IN_1243_MMDDYYYY.xml 中传递的文件名,其中 MMDDYYYY 是今天的日期?

4

3 回答 3

1

您应该能够使您的 bean 原型化范围并在您的属性表达式中包含一个 java 方法调用。就像是:

   <bean id="FileWriter" class="com.sample.FileWriter" scope="prototype">
          <constructor-arg value="${path.to.output}"/>
          <constructor-arg value="#{T(Utils).filename()}"/>
   </bean>

WhereUtils.filename ()是一个调用 SimpleDateFormat 并组成文件名的实用方法。

于 2015-05-08T14:14:22.870 回答
0

您无法在构造函数或 FileWriter 的其他方法中获取日历对象的当前日期并使用传入的文件名作为文件前缀的任何原因?

于 2015-05-08T14:16:08.957 回答
0

您可以使用 Spring 表达式语言 (SpEL)。

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

你应该能够做这样的事情:

<constructor-arg value="#{new SimpleDateFormat('MMddyyyy').format(new Date())}"/>

使用 # 而不是 $ 并添加必要的依赖项。

于 2015-05-08T14:19:46.717 回答