我想在我的阅读器(文件路径)中初始化一个属性,通过使用CommandLineJobRunner
执行我的作业将其值传递给jobParameters,<bean id = "reader" class = "com.xyz.reporting.myReader" scope = "step" init-method = "init">
<property name = "resource" value = "#{jobExecutionContext ['input.fileName']}" />
</ bean>
将文件的路径作为参数。
这是我的bean的配置:
java -cp "target / dependency-jars / *: target / my-project.jar" org.springframework.batch.core.launch.support.CommandLineJobRunner src / main / resources / job.xml interceptorJob input.filename = "filePath"
这是命令:
public final class MyReader implements ItemReader<Message>
{
...
/**
* input filename
*/
private String resource;
public void setResource(String resource_p)
{
resource = resource_p;
}
public void init () throws Exception
{
File file = new File (resource);
BufferedReader br = new BufferedReader (new FileReader (file));
}
...
}
在我的读者中,我想在init方法中打开文件(在bean配置中定义)
Month Current 30 Days 30 - 60 Days
Apr-13 1375159316 34511076 6423821
May-13 71398540 5674629 4775687
Jun-13 1314130060 27364660 9328588
这样做是不错的做法?调用init方法时是否会初始化resource属性,即jobParameters是否已经初始化了?
在进一步说明之前,这段代码是否可以使用Junit进行测试?
答案 0 :(得分:0)
回答你的问题:
将路径注入文件是否是一个好习惯 - 是的。您不需要使用init
方法进行注射。你可以让Spring通过@Value
注释注入它,如下所示:
@Value("#{jobParameters['input.fileName']}")
private Resource resource;
调用init方法时是否会初始化资源属性,即jobParameters是否已经初始化? - 假设您使用我上面描述的方法,您不需要使用init方法(Spring会为您处理所有这些)。
在进一步推进之前,这段代码是否可以使用Junit进行测试? - 是的,所有这些都是可测试的。我们有单元测试,证明在Github上的项目(https://github.com/spring-projects/spring-batch)。