- Singleton - default scope - one instance of object per context - You may declare two beans. But injecting them requires a lot more stuff (NOT RECOMMENDED) - Spring keeps the handle of the object - be careful with state data. since every class that have the dependency will have access to state data, it may get changed by some other thread. - Prototype - Creates new instance every time it is referenced - useful for transient data or types that flex on states - Spring hands over that instance and releases its own handle, so when the task is finished, it is automatically disposed off by garbage collector - Session - Works in web environment only - One instance of bean per user session - Helps to isolate session data from other sessions - Spring hands over that instance and releases its own handle, so when the session is finished, it is automatically disposed off by garbage collector - Request - Works in web environment only - One instance of bean per user request - Spring hands over that instance and releases its own handle, so when the request is finished, it is automatically disposed off by garbage collector There are 5 types of bean scopes available, they are: 1) singleton: Returns a single bean instance per Spring IoC container. 2) prototype: Returns a new bean instance each time when requested. 3) request: Returns a single instance for every HTTP request call. 4. Session 5. GlobalSession