2017-05-10 2 views
1

Alle,Spring Batch EnableBatchProcessing JobParameters

Ich habe eine Konfiguration ähnlich der folgenden.

@Configuration 
@EnableBatchProcessing 
public class MyConfiguration { 

    @Bean 
    protected Job myJob() { return <the-job>; } 

    @Bean 
    protected JobParameters params() { return <parameters>; } 

} 

Ich hatte angenommen, dass dies die JobParameters Bohne verwenden würde, die ich festgelegt, aber es funktioniert nicht. Wie verwende ich sowohl @EnableBatchProcessing als auch JobParameters?

Danke!

Antwort

2

@EnableBatchProcessing bietet Ihnen einige nützliche Beans wie die JobLauncher (further info). Übergeben Sie die angegebenen Jobparameter an die Methode, mit der Ihr Job tatsächlich gestartet wird.

@Autowired 
JobLauncher jobLauncher; 

public void startExecution() { 
    jobLauncher.run(job, jobParemeters); 
} 

Wenn ich richtig verstehe, wissen Sie, wie Sie Ihre jobParameters in Ihrem Schritt-Konfiguration für den Zugriff auf ähnliche

@Bean 
@StepScope 
public SomeProcessor processor(@Value("#{jobParameters['someParameter']}") String param) { 
    ... 
} 

@EnableBatchProcessing wird standardmäßig zur Verfügung stehenden Arbeitsplätze beim Start ausgeführt. Einstellen

spring.batch.job.enabled=false 

in Ihrem application.properties wird diese Funktion deaktivieren.

+0

So kann ich den 'JobLauncher', aber es funktioniert nicht ganz. Zuvor hatte ich keine Methode, mit der der Job gestartet wurde. Es macht es irgendwie für sich. Nachdem ich den Job ausgeführt habe, versucht die '@ EnableBatchProcessing' den Job erneut auszuführen, dieses Mal ohne die Parameter. – screenmutt

+0

Sie können den automatischen Start von Jobs deaktivieren, indem Sie _spring.batch.job.enabled = false_ in Ihrer Datei "application.properties" festlegen. – gausss

+0

Ich liebe dich. Nein im Ernst. – screenmutt

Verwandte Themen