When it comes to Spring specific pros and cons:
-
Constructor injection (from the definition) does not allow you to create circular dependencies between beans. This limitation is actually an advantage of constructor injection – Spring can resolve circular dependencies when setter injection is used without you even noticing.
-
On the other hand if you use constructor injection CGLIB is not able to create a proxy, forcing you to either use interface-based proxies or a dummy no-arg constructor. See: SPR-3150