Java 如何覆盖默认的JobLauncher?Spring批处理注释

Java 如何覆盖默认的JobLauncher?Spring批处理注释,java,spring,spring-batch,Java,Spring,Spring Batch,Spring是否有任何纯基于注释的文档?我看到的90%的文档都是为xml实现编写的 我试图覆盖默认的JobLauncher以能够传递JobParameters,但是我添加到下面代码中的任何JobLauncher函数都被忽略,而默认的SimpleJobLauncher将运行 我想用4个不同的作业参数启动同一作业的4个并发实例。参数应该告诉读取器从哪个目录读取 我可以使用@Value注释为目录传递值,但这似乎只允许我设置一个默认值,在运行之间不会更改 创建作业时无法配置作业(“世界”完全被忽略) 是

Spring是否有任何纯基于注释的文档?我看到的90%的文档都是为xml实现编写的

我试图覆盖默认的JobLauncher以能够传递JobParameters,但是我添加到下面代码中的任何JobLauncher函数都被忽略,而默认的SimpleJobLauncher将运行

我想用4个不同的作业参数启动同一作业的4个并发实例。参数应该告诉读取器从哪个目录读取

我可以使用@Value注释为目录传递值,但这似乎只允许我设置一个默认值,在运行之间不会更改

创建作业时无法配置作业(“世界”完全被忽略)


是否有更好的方法启动应用程序???

注释文档中没有消息,但我找到了传递参数的答案。因为我们不使用xml,所以可以使用AnnotationConfigApplicationContext,并指定顶级包。然后,我们使用此上下文获取默认作业启动器,并在启动作业时传递参数

    ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("testJob");


    Map<String, JobParameter> params = new HashMap<String, JobParameter>();
    JobExecution execution = null;
    JobParameters jp = null;
    try {
        params.put("directory", new JobParameter("testfolder"));
        jp = new JobParameters(params);
        execution = jobLauncher.run(job, jp);

    } catch (Exception e) {
        e.printStackTrace();
    }
ApplicationContext context=new AnnotationConfigApplicationContext(“package.names.*);
JobLauncher JobLauncher=(JobLauncher)context.getBean(“JobLauncher”);
Job Job=(Job)context.getBean(“testJob”);
Map params=新的HashMap();
JobExecution=null;
作业参数jp=null;
试一试{
参数put(“目录”,新作业参数(“testfolder”);
jp=新作业参数(参数);
execution=jobLauncher.run(作业,jp);
}捕获(例外e){
e、 printStackTrace();
}

关于注释文档没有任何消息,但我找到了传递参数的答案。因为我们不使用xml,所以可以使用AnnotationConfigApplicationContext,并指定顶级包。然后,我们使用此上下文获取默认作业启动器,并在启动作业时传递参数

    ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("testJob");


    Map<String, JobParameter> params = new HashMap<String, JobParameter>();
    JobExecution execution = null;
    JobParameters jp = null;
    try {
        params.put("directory", new JobParameter("testfolder"));
        jp = new JobParameters(params);
        execution = jobLauncher.run(job, jp);

    } catch (Exception e) {
        e.printStackTrace();
    }
ApplicationContext context=new AnnotationConfigApplicationContext(“package.names.*);
JobLauncher JobLauncher=(JobLauncher)context.getBean(“JobLauncher”);
Job Job=(Job)context.getBean(“testJob”);
Map params=新的HashMap();
JobExecution=null;
作业参数jp=null;
试一试{
参数put(“目录”,新作业参数(“testfolder”);
jp=新作业参数(参数);
execution=jobLauncher.run(作业,jp);
}捕获(例外e){
e、 printStackTrace();
}
如果希望保存sb元数据,可以更新transactionManager bean(推荐)

如果希望持久化(推荐)sb元数据,可以更新transactionManager bean

    ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("testJob");


    Map<String, JobParameter> params = new HashMap<String, JobParameter>();
    JobExecution execution = null;
    JobParameters jp = null;
    try {
        params.put("directory", new JobParameter("testfolder"));
        jp = new JobParameters(params);
        execution = jobLauncher.run(job, jp);

    } catch (Exception e) {
        e.printStackTrace();
    }
@Bean
    public ResourcelessTransactionManager transactionManager() {
        return new ResourcelessTransactionManager();
    }

    @Bean
    public MapJobRepositoryFactoryBean mapJobRepositoryFactory(ResourcelessTransactionManager txManager)
            throws Exception {
        MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean(txManager);
        factory.afterPropertiesSet();
        return factory;
    }

    @Bean
    public JobRepository jobRepository(MapJobRepositoryFactoryBean factory) throws Exception {
        return factory.getObject();
    }

    @Bean
    public JobExplorer jobExplorer(MapJobRepositoryFactoryBean factory) {
        return new SimpleJobExplorer(factory.getJobInstanceDao(), factory.getJobExecutionDao(),
                factory.getStepExecutionDao(), factory.getExecutionContextDao());
    }

    @Bean
    public SimpleJobLauncher jobLauncher(JobRepository jobRepository) {
        SimpleJobLauncher launcher = new SimpleJobLauncher();
        launcher.setJobRepository(jobRepository);
        return launcher;
    }