What is Dependency Injection ? | Inversion Of Control | Software Design Example Demo | InterviewDOT
Channel: Interview DOT
Date: 2020-02-21

Click here - https://www.youtube.com/channel/UCd0U_xlQxdZynq09knDszXA?sub_confirmation=1 to get notifications.

Tamil What is Dependency Injection ? | Inversion Of Control | Software Design Example Demo | InterviewDOT

Inversion of Control (IoC) means to create instances of dependencies first and latter instance of a class (optionally injecting them through constructor), instead of creating an instance of the class first and then the class instance creating instances of dependencies.

Inversion of control is a pattern used for decoupling components and layers in the system. The pattern is implemented through injecting dependencies into a component when it is constructed. These dependences are usually provided as interfaces for further decoupling and to support testability.

IOC (Inversion of control) is a general parent term while DI (Dependency injection) is a subset of IOC. IOC is a concept where the flow of application is inverted. ... DI provides objects that an object needs. So rather than the dependencies construct themselves they are injected by some external means.

Minimizes the amount of code in your application. ...
Make your application more testable by not requiring any singletons or JNDI lookup mechanisms in your unit test cases. ...
Loose coupling is promoted with minimal effort and least intrusive mechanism.

Dependency injection allows a client to remove all knowledge of a concrete implementation that it needs to use. This helps isolate the client from the impact of design changes and defects. It promotes reusability, testability and maintainability.

Dependency injection is a pattern to allow your application to inject objects on the fly to classes that need them, without forcing those classes to be responsible for those objects. It allows your code to be more loosely coupled, and Entity Framework Core plugs in to this same system of services.


“Inversion of control is a common characteristic of frameworks, so saying that these lightweight containers (spring and pico container, etc.) are special because they use inversion of control is like saying my car is special because it has wheels.” It is basically a defining characteristic of a framework. Inversion of Control is used to increase the modularity of the program and makes it extensible. But the question still is, “What aspect of control are they really inverting?”

Dependency Injection is a software design concept that allows a service to be used / injected in a way that is completely independent of any client consumption. Dependency injection separates the creation of a client's dependencies from the client's behavior, which allows program designs to be loosely coupled. 


Dependency Injection (DI) is a design pattern used to implement IoC. It allows the creation of dependent objects outside of a class and provides those objects to a class through different ways. Using DI, we move the creation and binding of the dependent objects outside of the class that depends on them.


Benefits of using DI
Helps in Unit testing.
Boiler plate code is reduced, as initializing of dependencies is done by the injector component.
Extending the application becomes easier.
Helps to enable loose coupling, which is important in application programming.
Disadvantages of DI
It’s a bit complex to learn, and if overused can lead to management issues and other problems.
Many compile time errors are pushed to run-time.
Dependency injection frameworks are implemented with reflection or dynamic programming. This can hinder use of IDE automation, such as “find references”, “show call hierarchy” and safe refactoring.

https://github.com/net-vinothkumar/dependency-injection