title: Why use constructor over setter injection in CDI?
body: <p>I couldn't find any reasonable answer here on SO so I hope it's not a duplicate. So why should I prefer setter or constructor injection over simple</p>
  
  <pre><code>@Inject
  MyBean bean;
  </code></pre>
  
  <p>I get the usage of the constructor injection if you need to do something with injected bean during your class initialization like</p>
  
  <pre><code>public void MyBean(@Inject OtherBean bean) {
      doSomeInit(bean);
      //I don't need to use @PostConstruct now
  }
  </code></pre>
  
  <p>but still, it's almost the same like <code>@PostConstruct</code> method and I don't get setter injection at all, isn't it just a relic after Spring and other DI frameworks?</p>