title: Guice: implications of field injection
body: <p>My understanding of Guice is that:</p>
  
  <ul>
  <li>Constructor-level injection (<code>@Inject public class Widget(Dep one, Dep two)</code>) <em>implies</em> that Guice will always inject that constructor every time it is invoked through an <code>Injector</code>; and</li>
  <li>Method-level injection (<code>@Inject public void setDepOne(Dep one)</code>) <em>implies</em> that Guice will always inject that method whenever it is called, so long as the <code>Widget</code> object was created using the Guice <code>Injector</code></li>
  </ul>
  
  <p>Are these two assumptions correct? If not, please clarify!</p>
  
  <p>So what I'm hung up on is: <strong>what are the implications of field-level injection?</strong></p>
  
  <pre><code>@Inject private Dep one;
  </code></pre>
  
  <p>Does this mean that Guice will always inject the property when the object is created through the Guice injector? In that case I would imagine it conflicts with constructor-level injection.</p>
  
  <p>For instance, does the following cause a conflict/error:</p>
  
  <pre><code>public class Widget {
      @Inject private Dep one;
  
      private Dep two;
  
      // Dep one already injected as a field!
      @Inject public Widget(Dep one, Dep two) {
          // ...
      }
  }
  </code></pre>
  
  <p>Thanks in advance!</p>