Currently, in my project, this is my first brush with Spring, and I have come to find that spring is the ideal framework for developing applications with intense business logic. There are certain features in spring that I find immensely powerful. However, there is one feature that really takes the cake: Dependency Injection!
Imagine a system where there is one flow for creation of some account. And there are various steps, which will be performed by different sub-systems. As of now, given that these systems have been developed by different people, the most popular and simplest way is to write these components and call one after the other component. More or less every component is hard-wired and will need some or the other portion to be written into the code. So, it also goes to say that changes will be that tougher to implement, you will have to change things in the code to get any change working.
What Spring can make you do is to define your entire flow in one XML and business interfaces and their implementations. It will ask you to create an XML that will pull all these implementations together and provide references to your component through the interfaces. Your business operation class' setters will be used for dependency injection.
For example, for creation of an account, I may have n number of operations like background check, credit history check, professional background check, etc. I just have to formalize input and specify interfaces, write an XML and will detail implementations of these interfaces and add references of these implementations to my account creation class. It is like defining a flow chart. Yes, it is as simple and as debuggable as that. Add the AOP concept for logging and security, and VOILA! you are ready for an app that is better debuggable and maintainable than never!
But... there is a catch. The entire magic of this arrangement works with impeccable integration between components. There has to be a clear protocol and business picture between two components. They have to be on the same understanding of the protocol.
So, organizations, that have good managers, can look forward to excellent applications using Spring. I am sure since Spring creates the entire application through smaller portions and pieces, it is the perfect platform for using Agile technologies. And as usual, agile also faces the biggest challenge of clear and precise communication.
Agile is being touted as the silver bullet for many issues, whereas it is not. Agile has its own list of pain-points. Combined with Spring, Agile can be a magical journey of controlled and managed software development. However, it can be an anathema for both Applications development company and its client.
The key here is... Communication!
Hare Krishna.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment