I recently started playing with Spring Roo Framework. I had two main objective.
- See if its a suitable replacement for “Appfuse” when I start a new project
- Learn best practices for building spring application from the spring guys
At first I was ‘WOW’ ed by the dynamic code generation and when I saw the app running, but as soon as I “perform eclipse” and imported the code in my workspace, I was disheartened. It is a great effort from the spring team but I am not gonna like it.
Why you may ask? I have couple of reasons, but the most important one is , Spring tried to inject their cutting edge features, aspect-j notations into the generated source. I am not against aspects but when I have more “Aspect-J” codes than my regular codes, I become worried. Worried about how I am going to maintain it, is there good enough IDE for it, are the regular java developers who will be working on the codes going to like/learn the new AspectJ concepts? Again, I am against overuse of annotation. I am ok with Hibernate annotations or validation annotations or transactional annotations, but its too much for me when I write annotations on the controller and map my http requests against it.
I am a big fan of spring , not because it gives me magical transaction management or supercool Controller annotations but because it lets me dependency inject my POJO beans into one another. This is an awesome tool for any designer. But with the latest Roo effort from Spring, I am worried about the future of spring framework. It seems like they are focusing on Rapid Application Development too much.
Anyone who has worked on a product for a decent amount of time will soon realize that the initial development time of the code is only 30-40% of the total lifecycle of the code (or even less). You have to update the code, add twisted domain logic which is never predictable by any annotation driven framework, perform bug fix on the code and the list goes on. By adding all these “Magic” into the code, you are going to leave the new developer (who will eventually take over the code from you) in the wonderland.
I liked the Spring Roo’s shell though. And the JPA POJO generation is also cool..but thats about it. Why don’t the spring guys make a better PetClinic application instead of overdoing annotations?