What is dependency management in Spring? Lets consider the following interfaces and concrete class that implements interface. public interface IOutputGenerator { public void generateOutput ( ) ; } public class CsvOutputGenerator implements IOutputGenerator { public void generateOutput ( ) { System . out . println ( "Csv Output Generator" ) ; } } public class JsonOutputGenerator implements IOutputGenerator { public void generateOutput ( ) { System . out . println ( "Json Output Generator" ) ; } } Lets call it directly. public class App { public static void main ( String [ ] args ) { IOutputGenerator output = new CsvOutputGenerator ( ) ; output . generateOutput ( ) ; } } In this way, the problem is the “output” is coupled tightly to CsvOutputGenerator, every change of output generator may involve code change. If this code is scattered all over of your project...