title: How to start a daemon on server startup in spring
body: <p>I want to start a daemon mail service thread on tomcat server startup. So, I have annotated a method with @Async annotation.</p>
  <p>I have a class which implements a ApplicationListener interface. When I call my async method from this class, it never starts asynchronously and blocks the current thread. And When I call my async method from a spring controller class, It never blocks and starts asynchronously.</p>
  <p>Why async method executed successfully from one class and not from the other class?</p>
  <p>What am I doing wrong and How can I execute my async method on server startup??</p>
  <p>Thanks in advance.</p>
  <p><strong>Edit:</strong> I tried using the InitializingBean interface, @PostConstruct, init-method approach to call my async method, but it never executed. Then I realized, my default lazy-init is true, So I make the lazy-init to false for my InitializingBean. Now it execute my asnyc method, but it blocks the current thread and now one more issue, I am facing is that My server didn't stop gracefully, but I have to stop my server forcefully.</p>