Twelve Best Practices For Spring XML Configurations
Subject:   Constructor args vs properties
Date:   2009-01-18 21:18:42
From:   Me
Response to: Constructor args vs properties

This isn't a reason at all to avoid constructor injection altogether. There are arguments for an against using constructor injection, but it certainly has its place.

I use constructor injection where the mandatory fields are not too high in number. Non-mandatory fields can still be injection via setters in addition. This also makes it obvious which fields are mandatory when reading configuration, and allows you to define the mandatory fields as final in your Java class.

Where there is a possible circular-reference issue, move this property to setter injection with a comment above that bean config. It's common sense stuff really and keeps it tidy.

As for autowiring I tend to agree that it seems more trouble than it's worth. Being explicit makes it easy to maintain and is not as restrictive if a new bean of that type is created. ByName just doesn't seem worth the possible confusion.