text: This is a tough review to write because I felt the authors made a good effort in the writing of the book and explanations of the Spring Framework. Writing a book is no small feat, and technical books are a special beast.
  
  With that last statement in mind, this is were the book sadly falls short. For one, the source code available online is a significant rewrite of the books' code. The authors explain ( on the publisher site ) that this is because they learned better ways and techniques to implement the samlpe application after the book went to print. 
  
  While improvement is always good, this presents two problems. 1. The sample application is now out of sync with the material. Not a good thing for those trying to learn, as you require more effort to study in tandem with the book. Also, and this is not to disparage the authors skill, but I buy books because I am expecting experienced, if not expert advice. If a small, sample application needs rewriting, perhaps they should write about something else?
  
  Further down this road, the sample application has errors that prevent it from compiling. I suspect that the final build file was not tested, or it was a case of "well, it compiles on my machine". There were several dependencies that required changes to the build file so it could be compiled. Thankfully, I use Eclipse and imported the project. Eclipse immediately informed me of missing dependencies, which I resolved by getting those jars on the build path and in the build file so they would be deployed in the war archive. Examples are:
  
  jakarta-commons/collections, and several core Spring jars relating to DAO and database access.
  
  For an experienced developer, familiar with ant and a good IDE, it was not a lot of trouble to get it running, it just did not give me a good impression.
  
  Bonus info for anyone switching the database out to postgresql: First, no matter what DB you swap in, you'll need to change a few hard coded references in the build file. I made property variables which I placed in build.properties. Then you will need to change the class User to something else ( and of course anything in the app that references it. ). Another great reason to use Eclipse. 
  
  Why you must change it, is User is a reserved keyword in postgresql and you will get databases errors because you can't name a table User
  