title: Upgrading large application from spring 3.0.x to 4.1.x - What best practices / procedures should I follow?
body: <p>I've been using Spring for about a year, and I'm comfortable enough using it, but I've avoided jumping under the hood for the most part. </p>
  
  <p>I'm tasked with upgrading a large, mission critical enterprise application, from Spring 3.0.x to Spring 4.1.x. </p>
  
  <p>What are the best practices for making a large, inevitably finicky and complex change like this? (Anything above and beyond <em>'throw in the jar files and see what happens'</em> and <em>'read the documentation here: <a href="http://spring.io/">http://spring.io/</a>'</em> would be very helpful)</p>
  
  <p>The system: </p>
  
  <ul>
  <li><p>Java 6 - jax-b/-p/-ws/, Apache Commons, </p></li>
  <li><p>Spring 3.0.5 - the usuals (core, context, beans etc), MVC, AOP, ORM, JDBC, Acegi</p></li>
  <li><p>Hibernate 3.5</p></li>
  <li><p>Tomcat 6</p></li>
  <li><p>0 unit tests or automated testing of any kind.</p></li>
  <li><p>Maven dependency management and build automation. </p></li>
  <li><p>Half controllers using annotations for request response mapping, half using simpleFormController pattern, half autowired, half hooked up with xml. </p></li>
  <li><p>Hundreds of views, scores of controllers. </p></li>
  </ul>
  
  <p>Steps I've taken so far: </p>
  
  <ul>
  <li><p>Prepared a (mostly automated) regression testing script (so that I can ensure I haven't broken anything)</p></li>
  <li><p>I've started reading through the 'upgrade guides' one at a time, "upgrading to 3.1", "upgrading to 3.2" and making notes on things that sound familiar, but I think I'd need to have a much deeper grasp of our system, and spring in general, before I could be confident of this as an exhaustive approach. This just generally feels like a haphazard approach, which is not what I want for such a complex change. </p></li>
  </ul>
  
  <p>My questions: </p>
  
  <ul>
  <li><p><strong>What steps/procedures are considered 'best practice' in these for a job like this?</strong></p></li>
  <li><p><strong>Does anything jump out at you as a 'gotcha' for a job like this</strong>?</p></li>
  </ul>