title: Clean solution for eager CDI bean instantiation
body: <p>Imagine the following simplified DI model:</p>
  
  <pre><code>@ApplicationScoped
  public class A {
  
      private B b;
  
      @Inject
      public A(B b) {
          this.B = b;
      }
  
  }
  
  @ApplicationScoped
  public class B {
  
      private C c;
  
      @Inject
      public B(C c) {
          this.C = c;
      }
  
  }
  
  @ApplicationScoped
  public class C {
  
      @PostConstruct
      public void start() {
          // processing that should begin on startup
      }
  
  }
  </code></pre>
  
  <p>Suppose I want <code>C#start</code> to be called on deployment completion. The pattern that is generally suggested online is the one presented <a href="http://ovaraksin.blogspot.gr/2013/02/eager-cdi-beans.html" rel="noreferrer">here</a> but that solution: 1) adds too much boilerplate, 2) adds a new text file for the extension, 3) resorts to the cheat of using <code>toString</code> solely to trigger the <code>B</code> proxy to instantiate the actual <code>B</code> bean underneath which will in turn trigger the <code>C</code> proxy etc.</p>
  
  <p>Since CDI 1.1, adding the following method to <code>A</code> is also a solution:</p>
  
  <pre><code>public void init(@Observes @Initialized(ApplicationScoped.class) Object init) {
     B.toString();
  }
  </code></pre>
  
  <p>This solves the first two problems described above but I still need to call a dummy method on <code>B</code> so that the instantiation/injection chain is triggered and ends up calling the <code>@PostConstruct</code> annotated method of <code>C</code>.</p>
  
  <p>Am I missing a cleaner solution to this problem? Does CDI 2.0 address this?</p>