当前位置: 首页 > 知识库问答 >
问题:

是否可以动态创建资源名称?

宿镜
2023-03-14

我正在写入一个CSV文件,并使用FlatFileItemWriter来完成。我有一个bean,它是我的类,我也有一个资源属性,在这里我提供了用于写出项的文件名。

是否可以将日期和时间附加到文件名?

现在我告诉它写入一个名为report.csv的文件,而不是我希望它写入一个名为report-7-2-2014-16-03.csv的文件

以下是作者的XML配置

<bean id="csvWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
    <property name="resource">
        <bean class="org.springframework.core.io.FileSystemResource">
            <constructor-arg value="${REPORT_FILENAME}" />
        </bean>
    </property>
    <property name="shouldDeleteIfExists" value="true" />
    <property name="lineAggregator">
        <bean class="com.example.CSVLineAggregator" />
    </property>
    <property name="headerCallback">
        <bean class="com.example.CSVHeaderWriter" >
            <constructor-arg value="${REPORT_HEADER}" />
        </bean>
    </property>
</bean>

共有1个答案

裴泰平
2023-03-14

您需要使用后期绑定配置步骤来解决问题
后期绑定允许您在作业/步骤执行期间使用存储在作业参数和作业或步骤执行上下文中的值,而不是以静态方式(明确地说,在xml传递期间)计算表达式;此上下文仅在作业/步骤执行期间可用
要启用此功能

  1. 用特殊的step=“scope”
<bean id="csvWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
    <property name="resource" value="file://report-dir/#{jobParameters['REPORT_FILENAME']}" />
    <property name="shouldDeleteIfExists" value="true" />
    <property name="lineAggregator">
        <bean class="com.example.CSVLineAggregator" />
    </property>
    <property name="headerCallback">
        <bean class="com.example.CSVHeaderWriter" >
            <constructor-arg value="${REPORT_HEADER}" />
        </bean>
    </property>
</bean>

这只是一个小例子,但是你可以阅读更多关于后期绑定的内容

 类似资料:
  • 假设AWS堆栈是使用CloudFormation创建的。现在,其中一种资源在云层形成之外进行了修改。 1) 有没有可能让CloudFormation专门创建这些资源?根据我的理解,我们不能这样做,因为CloudFormation不能识别差异,因此不能创建修改后的资源。我的观察正确吗? 2) 此外,如果在CloudFormation之外进行了修改,我需要哪些选项才能将堆栈恢复到其原始状态?

  • 我希望设置不同的AWS标识和访问管理(IAM)用户,以便在该IAM用户创建AWS资源时,自动为该资源分配特定的标记。 例如:如果IAM user F创建一个新的EC2实例,该实例将自动标记为user:MrF。是否可以构建一个自定义策略来执行此操作?

  • 问题内容: 让我们考虑以下情况。有一个,有一个。子窗格将添加到父窗格。考虑到可以动态地添加和删除子窗格而没有任何限制和顺序的情况下,如何才能仅在可见子窗格的情况下使parentPane可见。当然childPane的可见状态也可以随时更改。是否可以创建动态Bindings.OR,以便我可以动态向其添加/删除子可见属性?如果是,那怎么办?如果没有,那么在这种情况下使用什么解决方案? 问题答案: 您可以

  • 问题内容: 我们正在使用加载属性信息。我们的属性文件已经变得非常庞大,我们正在考虑将主属性文件分成几个子模块。有可能实现这一目标吗? 让我知道? 问题答案: 首先,我想知道为什么您选择了。给出问题的表达方式后,您似乎不必关心本地化/国际化或捆绑文件继承。 有了它,它就变得异常容易,因为它实现了反过来又提供了一种合并另一张地图的方法。开球示例: 如果您真的坚持使用,则最好的选择是创建一个自定义,在该

  • 问题内容: 因此,我拥有这个现有的数据库架构,其中包含许多要使用JPA / Hibernate建模的表。每个表具有同一组,每组包含30个其他列(以允许运行时扩展记录的字段数)。 我计划为每个表定义简单的类 然后在公共类中定义公共附加参数 尽管这行得通,但我不喜欢此类的硬编码性质。 我想将每组字符串,长字段和双精度字段建模为一个附加参数组,然后将其设置为0..9组。如果需要的话,这样我以后可以轻松添

  • 我有一个基于虚拟机的工作资源管理器。(Ubuntu)现在我以多种方式对其进行了定制,并希望在将来创建新VM时将其作为起始模板。 基本上,我想从我的自定义VM中轻松创建一个新的VM,就像我最初通过Azure门户通过bitnami选择LAMP VM创建它一样。 请注意,我知道Linux/Windows配置/取消配置过程。事实上,我可以接受并使用这样一种场景:机器没有被取消配置,只是被“克隆”(如果这在