2011-05-10 11 views
13

나는 Spring Batch 애플리케이션을 가지고 있는데, 이것은 CommandLineJobRunner으로 시작한다. 하지만 이제는이 애플리케이션을 기업 환경에 내장해야합니다. 거기에는 우리가 사용해야하는 Launcher 응용 프로그램이 있습니다. 이 런처 응용 프로그램의 경우 시작시 호출 될 기본 메서드가있는 시작 클래스와 Spring 배치를 시작해야하는 위치가 필요합니다.스프링 배치 작업을 프로그래밍 방식으로 실행 하시겠습니까?

JobLauncher을 수동으로 할당하고이 런처로 작업을 실행하는 유일한 방법입니까, 아니면이를 지원할 스프링 배치에 클래스가 있습니까 (아니면 누군가 샘플을 알고 있습니까)?

답변

11

예, 프로그래밍 방식으로 작업을 시작할 수 있습니다. in the sourceCommandLineJobRunner이라면 main 메소드는 Spring 컨텍스트를 만들고 실행 프로그램을 사용하여 작업을 실행한다. 따라서 새 애플리케이션에서이 작업을 수행 할 수 있습니다.

6

: 당신이 웹 애플리케이션에서 작업을 트리거 할 수있는 방법을 찾고 있다면 JobLauncher은 서블릿/컨트롤러를 자동 설정할 수 있습니다 어떤 이유로 든 맞춤 로직이 필요한 경우) 항상 다음과 같이 할 수 있습니다.

public static void main(String[] args) { 

    SpringApplication app = new SpringApplication(YourApplication.class); 
    app.setWebEnvironment(false); 
    ConfigurableApplicationContext ctx = app.run(args); 

    JobLauncher jobLauncher = ctx.getBean(JobLauncher.class); 
    Job job = ctx.getBean("your-job-here", Job.class); 
    JobParameters jobParameters = new JobParametersBuilder().toJobParameters(); 


    JobExecution jobExecution = jobLauncher.run(job, jobParameters); 
    BatchStatus batchStatus = jobExecution.getStatus(); 
} 
+0

나는이 접근법을 시도했지만 어떻게 든 콩이 Spring container에 의해 초기화되었다는 사실에도 불구하고 컨텍스트가 "your-job-here"라는 bean을 찾을 수 없다. – Vishal

관련 문제