2. Constructor injection enforces the order of initialization and prevent circular dependencies while in case of property injection it is not clear in which order things need to be instantiated.
3. By using setter injection, you can override certain dependency which is not possible with constructor injection because every time you call the constructor, a new object is gets created.
4. If Object A and B are dependent each other i.e A is depends ob B and vice-versa. You can not create both object bcz A object cannot be created until B is created and vice-versa. This (circular dependencies ) can be resolve through property-injection. Objects constructed before property invoked.