title: Spring injects dependencies in constructor without @Autowired annotation
body: <p>I'm experimenting with examples from this official Spring <a href="https://spring.io/guides/gs/async-method/" rel="noreferrer">tutorials</a> and there is a dependency on this code:<br>
  <a href="https://github.com/spring-guides/gs-async-method/tree/master/complete" rel="noreferrer">https://github.com/spring-guides/gs-async-method/tree/master/complete</a></p>
  
  <p>If you look at the code on <code>AppRunner.java</code>  class, I have 2 questions:</p>
  
  <ol>
  <li>When server is starting, if I put a breakpoint in this class's constructor, seems like in the constructor, the <code>GitHubLookupService</code> is provided by spring, using the <code>@Service</code> bean that was configured. BUT, there was no <code>@Autowired</code> annotation on the constructor, so how in the world this constructor get called with the right dependency?  It was supposed to be <code>null</code>.</li>
  </ol>
  
  <p>Is it an automatic assumption of <strong>Spring Boot</strong>?<br>
  Does Spring see "private field + constructor argument, and it assumes it should look for an appropriate bean?<br>
  Is it <strong>Spring Framework</strong> or <strong>Spring boot</strong>?<br>
  Am I missing something?</p>
  
  <ol start="2">
  <li>As I remember, it was mendatory to provide <em>default constructor</em> to beans / service etc. How come this class (<code>AppRunner</code>) doesn't have a default constructor?
  How does Spring knows that it should run the constructor with the argument?
  Is it because it is the only constructor?</li>
  </ol>