Spring injects dependencies in constructor without @Autowired annotation
<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>