Dependency Injection
Inversion of Control (IoC) is a general concept, and it can be
expressed in many different ways and Dependency Injection is merely one
concrete example of Inversion of Control.
This concept says that you do not create your objects but describe
how they should be created. You don't directly connect your components and
services together in code but describe which services are needed by which
components in a configuration file. A container (the IOC container) is then
responsible for hooking it all up.
What are the different types of IoC (dependency injection)?
· Constructor-based dependency injection:
Constructor-based DI is accomplished when the container invokes a class
constructor with a number of arguments, each representing a dependency on other
class.
· Setter-based
dependency injection: Setter-based DI is accomplished by the container calling
setter methods on your beans after invoking a no-argument constructor or
no-argument static factory method to instantiate your bean.
Which DI would you suggest Constructor-based or setter-based DI?
Since you can mix both, Constructor- and Setter-based DI, it is a
good rule of thumb to use constructor arguments for mandatory dependencies and
setters for optional dependencies. Note that the use of a @Required annotation
on a setter can be used to make setters required dependencies.
No comments:
Post a Comment