I would like to know a little detail about extending Spring MVC to develop custom view/navigation/flow framework. For some reason, we will not use Spring Web Flow. We developed a small frameowrk specification and sample implementation based on usage of many simple form controller; one for every jsp page that holds a form and one for the rest of non-form JSPs. Our custom framework is under active redesign and improvement. One of our design goal is to make our framework less dependent on Spring engine.
I am going through a high-level but unclear/inconsistent explanation of our framework development requirements. Our framework development requirements are as follows.
* The framework is being developed for a group of applications related to banking, that consumes a lot of related services from different third parties. Currently my team is concerned with the top layer (MVC) architecture.
* Enable developers write only minimal codes and configurations to add a new sub-module. Template patterns will be used heavily to fulfill this requirement.
* Use our custom POJO based validation/error handling framework in our MVC layer.
* Use our custom navigation/work flow management system (but not Spring Web Flow) on top of Spring MVC. JSP pages should be reusable among different similar work flows and controllers should not have any knowledge of previous or next pages - that is the sole responsibility of navigation manager to whom it makes only a single call to get the next view.
* Take advantage of Spring's automatic request parameter binding.
* Take the i18n features of Spring MVC.
* Use our own back-end or middle tier technologies.
* Make the framework so change-friendly that in future, if necessary, we should be able to remove Spring as our framework engine and use something else, for example, plain vanilla Servlets, JSP/JSTL with comparatively less efforts.
* Application should be highly scalable and performance is not so big concern yet, partially because the company can provide as much hardware and other resources as necessary to cover it up. Rather saving developer's time or minimizing developer's chances of making mistakes are of greater concern.
* Use Java Reflection API in places where it reduces developer involvement.
* No XP or unit/functional testings are considered at this stage.
It may seem that better to develop the whole framework on top of Servlets/JSP rather than using limited portion of Spring MVC.
I wrote a quick implementaion of Spring MVC's Controller interface and now considering to use BaseCommandController or AbstractFormController and use its template methods to introduce further templating of our various service-related method calls that interest our framework. Or any other idea to extend it?
San Francisco, CA