Spring's dependency injection help programmer to follow OOPS concept. According to the OOPS concept the classes should be loosely coupled if they has dependency. For example class A has dependency on class B, then one has to create object of class B in class A using new operator. In future if someone changes the constructor of class B then it has to make changes in class A also because the constructor has been used in class A to make object of class B. In this scenario we can say that class A is tightly coupled with class B. Using dependency injection feature we does wiring of the bean using configuration file. So we only need to change configuration file instead of the code. I hope this would clarify you doubt.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com