title: Prevent Spring Batch automatic job trigger after context creation without Spring Boot
body: <p>I am setting up a project with <strong>Spring Batch without using Spring Boot</strong>.
  When the Spring application context is created, all the jobs get executed.</p>
  
  <p>I tried adding <code>spring.batch.job.enbled=false</code> to the <em>application.properties</em> to prevent this but it still does not work.</p>
  
  <p>Is there any other way to stop Spring from executing the jobs at start?</p>
  
  <p>Main Class:</p>
  
  <pre><code>package com.project.batch;
  import ...    
  
  @Configuration
  @EnableBatchProcessing
  @PropertySource("classpath:application.properties")
  public class App {
      public static void main(String [] args) throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
          System.out.println("starting main");
  
          AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
          context.scan("com.project.batch");
          context.refresh();
  
          //JobParameters jobParameters = new JobParametersBuilder().toJobParameters();
          //JobLauncher jobLauncher = context.getBean(JobLauncher.class);
          //JobExecution execution = jobLauncher.run(context.getBean("loaderJob",Job.class),jobParameters);
          System.out.println("finished!!");
      }
  }
  </code></pre>
  
  <p>Job Class:</p>
  
  <pre><code>package com.project.batch;
  import ... 
  
  @Configuration
  public class LoaderJobConfig {
      @Autowired
      private JobBuilderFactory jobBuilderFactory;
  
      @Autowired
      JdbcTemplate jdbcTemplate;
  
      @Autowired
      private StepBuilderFactory stepBuilderFactory;
  
      @Bean
      public Job loaderJob(Step step1) throws Exception {
          System.out.println("Starting loaderJob");
          ...
      }
  }
  </code></pre>
  
  <p>application.properties:</p>
  
  <pre><code>spring.batch.job.enbled=false
  spring.batch.job.names=
  </code></pre>
  
  <p>Run logs:</p>
  
  <pre><code>starting main
  Nov 06, 2017 9:29:02 AM org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
  INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@306a30c7: startup date [Mon Nov 06 09:29:02 EST 2017]; root of context hierarchy
  Nov 06, 2017 9:29:03 AM org.springframework.context.annotation.ConfigurationClassEnhancer intercept
  WARNING: @Bean method ScopeConfiguration.stepScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean Javadoc for complete details
  Nov 06, 2017 9:29:03 AM org.springframework.context.annotation.ConfigurationClassEnhancer intercept
  WARNING: @Bean method ScopeConfiguration.jobScope is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean Javadoc for complete details
  Nov 06, 2017 9:29:03 AM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
  INFO: Loaded JDBC driver: org.postgresql.Driver
  Starting loaderJob
  found the value: [MER]
  Completed loaderJob
  finished!!
  
  Process finished with exit code 0
  </code></pre>
  
  <p>EDIT: Removed the job execution code from main class, the jobs still get triggered at context refresh</p>
  
  <p>EDIT 2: Including run logs</p>
  
  <p>EDIT 3: Fixed typo and updated logs</p>