Spring Community generally offers setter injection as better choice but where no hard and fast rule. Setter Injection can be reconfigured or re injected is but constructor injection does not have this ability. But while dealing with third party classes where one does not have the source setter methods will not be exposed and programmer have to use constructor based injection.