Ragu,
Before you understand what happens to the variables, you have to understand thread safety and state fullness. A bean is said to be state full if it keeps data pertaining to the current context in data members
So, for example
The above code will work, but is not a good way to write a service. The current user that you are trying to retrieve is stored in a data member, which means it is shared between threads that call the getUser function. This means that it is not thread safe because it is stateful
A better way to write this code is
The current user is not stored in a shared variable. It's in a local variable, and each thread gets its own variable. It's not stateful. It's thread safe
Stateless beans can be singletons. In spring nothing stops you from declaring a stateful bean as a singleton, but if you do, you are asking for lot of trouble. Your code will be thread unsafe. Singleton beans will never be in a pool. As the name singleton suggests, there will always be one instance of a singleton bean.
If you do have stateful beans, you can use a different scope.
This page talks about the various bean scopes. I don't think spring does pooling on non singleton beans. Although I might be wrong there