Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jobParameters初始化要在Spring Init方法中使用的属性_Java_Spring_Spring Batch - Fatal编程技术网

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;