I disagree that setter injection is better than constructor injection. Failing fast at startup if dependencies are not provided, is always better than failing at runtime if a developer forgot to set the dependency.

And implementing "InitializingBean" to check that the setter was called is a complete hack. It couples your service to spring for management of it's lifecycle.