Java 使用jobParameters初始化要在Spring Init方法中使用的属性
我想在我的读取器(文件路径)中初始化一个属性,通过使用Java 使用jobParameters初始化要在Spring Init方法中使用的属性,java,spring,spring-batch,Java,Spring,Spring Batch,我想在我的读取器(文件路径)中初始化一个属性,通过使用CommandLineJobRunner执行我的作业,该属性的值将被传递到jobParameters中,该作业将文件路径作为参数 下面是my bean的配置: <bean id = "reader" class = "com.xyz.reporting.myReader" scope = "step" init-method = "init"> <property name = "resource" value = "
CommandLineJobRunner
执行我的作业,该属性的值将被传递到jobParameters中,该作业将文件路径作为参数
下面是my bean的配置:
<bean id = "reader" class = "com.xyz.reporting.myReader" scope = "step" init-method = "init">
<property name = "resource" value = "#{jobExecutionContext ['input.fileName']}" />
</ bean>
在我的阅读器中,我想用init方法(在bean配置中定义)打开文件
公共最终类MyReader实现ItemReader
{
...
/**
*输入文件名
*/
私有字符串资源;
公共void集合资源(字符串资源)
{
资源=资源;
}
public void init()引发异常
{
文件=新文件(资源);
BufferedReader br=新的BufferedReader(新文件读取器(文件));
}
...
}
这样做是一种好的做法吗?调用init方法时资源属性是否会初始化,即jobParameters是否已经初始化
在继续之前,此代码是否可以用Junit进行测试?来回答您的问题: 将路径插入文件是否是一种好的做法-是。您不需要使用
init
方法来执行注入。您可以让Spring通过@Value
注释注入它,如下所示:
@Value("#{jobParameters['input.fileName']}")
private Resource resource;
调用init方法时,资源属性是否会初始化,即jobParameters是否已经初始化-假设您使用上述方法,则不需要使用init方法(Spring会为您处理所有这些)
在继续之前,这段代码是否可以用Junit进行测试-是的,所有这些都是可测试的。我们有单元测试来证明在Github()上的项目中使用{jobParameters}
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));
}
...
}
@Value("#{jobParameters['input.fileName']}")
private Resource resource;