title: Why are we Injecting on constructor/method
body: <p>I am new to Spring. Please help me in understanding the below logic.
  I have gone through Google and Stack Overflow search, but nowhere I was able to find a clear and straightforward explanation.</p>
  <p>Exporter.java</p>
  <pre><code>public class Exporter {
      @NonNull
      public final Subscription subscription;
  
      @Inject
      public Exporter(@Named(DOWNLOAD) final boolean download,
                          final Subscription subscription){
          this.subscription = subscription;
      }
  }
  </code></pre>
  <p>Subscription.java</p>
  <pre><code>@Getter
  @singleton
  @AllArgsConstructor(onConstructor = @__(Inject))
  public class Subscription {
      //some logic
  }
  </code></pre>
  <ul>
  <li>Why are we using @Inject here for a constructor(Exporter)? what exactly it does?</li>
  <li>When does it get initialized?</li>
  <li>Why are we required to use @AllArgsConstructor for Subscription class?</li>
  </ul>