title: Spring-Boot @Autowired in main class is getting null
body: <p>I want to connect to a Sonic Broker Topic and Listen for any incoming XML message. I did something like below;</p>
  
  <p>Application.java</p>
  
  <pre><code>@SpringBootApplication
  @ComponentScan({"com.mainpack", "com.msgpack.jms"})
  @EnableJms
  public class Application extends SpringBootServletInitializer {
  
  @Autowired
  private JmsTopicListener jmsTopicListener;
  
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(Application.class);
  }
  
  @Override
  public void onStartup(final ServletContext servletContext) throws ServletException {
      try {
          LogService.info(Application.class.getName(), "Starting Service...");
          super.onStartup(servletContext);
          jmsTopicListener.listenMessage();
          LogService.info(Application.class.getName(), "Service Started");
      } catch (Exception ex) {
          LogService.error(this.getClass().getName(), ex);
      }
  }
  
  public static void main(String[] args) {
      ApplicationContext context = SpringApplication.run(Application.class, args);
      LogService.info(Application.class.getName(), "Service Started...");
   }
  }
  </code></pre>
  
  <p>JmsTopicListener.java</p>
  
  <pre><code>@Component
  public class JmsTopicListener {
  
  @Autowired
  private ApplicationProperties properties;
  
  @Autowired
  private MsgListener msgListener;
  
  public void listenMessage() {
      TopicConnectionFactory factory;
      TopicConnection connection = null;
      LogService.info(this.getClass().getName(), "Registering Broker Connection");
      try {
          factory = new progress.message.jclient.TopicConnectionFactory(properties.getBrokerURL());
          connection = factory.createTopicConnection(properties.getUserName(), properties.getPass());
  
          javax.jms.TopicSession subSession = (TopicSession) connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
  
          javax.jms.Topic topic = subSession.createTopic(properties.getTopicName());
          MessageConsumer subscriber = subSession.createSubscriber(topic);
          subscriber.setMessageListener(msgListener);
          connection.start();
          LogService.info(this.getClass().getName(), "Broker connected");
      } catch (Exception ex) {
          LogService.error(this.getClass().getName(), ex);
      }
   }
  }
  </code></pre>
  
  <p>MsgListener.java</p>
  
  <pre><code>@Component
  public class MsgListener implements MessageListener {
  
  @Override
  public void onMessage(Message msg) {
      if (msg instanceof XMLMessage) {
          try {
              XMLMessage m = (XMLMessage) msg;
              if (m.getText().contains("Applications")) {
                  LogService.info(this.getClass().getName(), "Recieved A Applications Message");
              } else {
                  LogService.info(this.getClass().getName(), "Recieved Message Does not contain Applications Tag");
              }
          } catch (Exception ex) {
              LogService.info(this.getClass().getName(), "Exception: " + ex.getMessage());
          }
      }
   }
  }
  </code></pre>
  
  <p>When, i run this code i get nullPointer at line <code>jmsTopicListener.listenMessage()</code> in <code>Application.java</code>.</p>
  
  <p>What mistake i have made here? Is there a way i can improve this (I mean get the work done in less code maybe)?.</p>
  
  <p>NOTE: com.mainpack have classes <code>Application.java</code> and <code>ApplicationProp.java</code>
  com.msgpack.jms have <code>JmsTopicListener.java</code> and <code>MsgListner.java</code></p>
  
  <p>Error From Logger:</p>
  
  <pre><code>ERROR [2015-07-14 14:34:52] [com.mainpack.Application] [localhost-startStop-1] - [Exception: ]java.lang.NullPointerException
      at com.mainpack.Application.onStartup(Application.java:33)
      at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5156)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
      at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)
      at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768)
      at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  </code></pre>