A comparison of field, constructor, and setter injection in Spring