Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does Spring maintain singletons,prototypes... under the hood?

Tags:

java

spring

I've been using Spring for a while now but I really don't know how when I ask Spring to inject a DAO in multiple different service class that it is always the same class or if I require prototype is a new one every time and so on for session scope etc. Can anyone share some light on such especially 'Singletons' as it is the most often used and also speak to the thread-safety issues for service layer classes that may contain state but are singletons

like image 773
non sequitor Avatar asked Sep 03 '25 04:09

non sequitor


1 Answers

I'm not trying to be a "LMGTFY" jackass here, but I doubt anyone will explain it better than Spring documentation on bean scopes.

As a quick rehash, though, to address your specific questions:

  1. Singleton beans (which is the default scope) are normally pre-instantiated (unless configured otherwise) by bean factory when it's loaded. Think of it as Map of bean by its id. When you ask for a bean (directly or as dependency for other bean or when it's autowired) it's obtained from that map.
  2. Prototype beans are not pre-instantiated; every time you ask for a prototype bean Spring creates and initializes a new instance.
  3. As far as multi-threading goes, Dean J (who's deleted his answer) is right - your services should not maintain a state or, if they do, should be synchronized appropriately.
like image 162
ChssPly76 Avatar answered Sep 05 '25 18:09

ChssPly76



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!