You're right. IMHO, though, using constructor injection has some benefits. using it + final fields forces the user to provide all dependencies, and if a new member is introduced, all the code that constructs the object just breaks. Unis tests are a common place where you may manually build the object. It is a good way to make sure all injected fields will be always present.