One funny thing I discovered recently is that annotation values don't have to be literal values. You can reference constants. Thus I went from:
@Scope("perthread")
public class ....
To:
@Scope(IOCConstants.PERTHREAD_SCOPE) public class ...
I think this is a Good Thing, even though it's a bit more verbose (a static import helps there) because I know at compile time that there isn't a typo in my constant's variable name ... whereas @Scope("prthread") would not be caught until runtime.