If you are looking for a way to implement declarative caching with Spring, there is no way around Ehcache Spring Annotations . This superimposes a transparent aspect on methods of any proxied bean, taking the method arguments as a key.
Little known but easy to stumble upon  is an implementation (design?) quirk which expects method arguments to generate unique hash codes, ignoring the Java convention of the equals() method behavior. Hence, method arguments computing the same hash code will map to the same cache entry regardless whether they equal() or not.
Update 2011-11-08 Here is an example (stripped down to essentials, use your imagination for getters, constructors, sensible null-checks etc):
 Ehcache Spring Annotations on Google Code
 Hash collision with Ehcache Spring Annotations