Well this post is only to communicate my disagreement in one of the changes made from Spring 2.5.x to Spring 3.x specifically the deprecation of traditional Controller class.
Basically I work for clients that have many Spring based applications, sometimes our clients require changes like "The url to products must change from x.html to y.html", in Spring 2.5 I only need to telnet the servers, change the url in the HandlerMapping and maybe restart the server, since all the (traditional) controller classes were deprecated in 3.0 (and will be removed in further revisions in favor to annotated controllers) this will force me to change the source code, compile and deploy each time I need to change a URL. And belive me, for my client, change a class file in a production enviroment requires a whole process that make me the things difficult.
Outside what I expose above, I have several concerns about this change:
1) I think annotations broke the object - oriented paradigm in many ways, so I use annotations only in some special cases.
2) It's ok to have both options, traditional Controller and annotated controller, so each developer can choose the best alternative according particular requirements, but I think is not cool to force the whole community to use annotated based controllers when this approach may not fit requirements in all cases. Deprecating / Removing traditional controllers is against the "choice" spirit that should be followed by any open - source framework.
3) This approach also broke one of the main Spring beliefs "JavaBeans loosely coupled through interfaces is a good model" - Where is the loosely coupled if I need to tie methods to URL patterns in the code?
Not sure why this dessition was made, but I created this thread for three reasons:
1) Express my disagreement into deprecate traditional and useful classes (In general Deprecation should be used only in favor of fixing / improving code, not changing design for existing working components). Expecting the Spring developers to rollback this dessition.
2) Look for a good explanation about why this dessition was made (other than "were deprecated in favor of annotated controllers").
3) Get opinions of other users affected by this change.
I found other threads with similar concerns:
Also I think the most elegant solution for this is to split spring-web in two different bundles: spring-web & spring-web-annotations, so each developer can import the needed package into his/her projects without adding unused class to his/her path.
Please share your toughts.