title: Spring Boot: exception while exiting application
body: <p>I want to run a Spring application that should exit after it has done its work. But in my implementation I get an exception.</p>
  
  <p><code>build.gradle</code> contains:</p>
  
  <pre><code>dependencies {
      compile("org.springframework.boot:spring-boot-starter-web") {
          exclude module: "spring-boot-starter-tomcat"
      }
  }
  </code></pre>
  
  <p><code>Application.java</code>:</p>
  
  <pre><code>@SpringBootApplication
  public class Application {
  
      @Autowired
      private ApplicationContext context;
  
      public static void main(String[] args) {
          SpringApplication.run(Application.class, args);
      }
  
      @PostConstruct
      public void doTheWorkAndExit() {
          // do the work ...
          SpringApplication.exit(context, () -&gt; 0);
      }
  
  }
  </code></pre>
  
  <p>I get the exception</p>
  
  <pre><code>Exception thrown from LifecycleProcessor on context close
  
  java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.context.annotation.AnnotationConfigAppl
  icationContext@1807f5a7: startup date [Fri Mar 11 10:03:27 CET 2016]; root of context hierarchy
      at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:415)
      at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:975)
      at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:934)
      at org.springframework.boot.SpringApplication.close(SpringApplication.java:1252)
      at org.springframework.boot.SpringApplication.exit(SpringApplication.java:1238)
      at mypackage.Application.doTheWorkAndExit(Application.java:34)
      ...
  </code></pre>
  
  <p>What can I do? Is there a better solution than using <code>System.exit(0)</code>?</p>