You can model the spring using any method, either an Array modifier or a Screw modifier and then use a curve modifier to deform and animate the spring. (Animate the both the curve and spring at once, or use hooks to move the control points of the curves)
Create a simple circle and move it away from it's origin in edit mode
Add a screw modifier
Add a curve modifier.
Note that the origin of the curve and the spring must be in the same place in order for it to follow the curve properly. You may also need to rotate the spring on the Y axis by 90 degrees depending on how you setup the spring and curve modifiers.
To animate the curve, simply create a hook (Ctrl+H) for each of the curve's control points and animate those.