2 Kasım 2022 Çarşamba

SpringContext @Scope Anotasyonu - Singleton Scope

Giriş
Bir Spring bean için varsayılan değer budur. Bu bean'den tek bir tane yaratılır. 

Örnek
@Bean aslında @Scope("singleton") anlamına da gelir. Şöyle yaparız
@Bean
// @Scope("singleton")
// @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public Foo foo() {
  return new Foo();
}
How to guarantee thread-safety when Spring bean is default singleton
Çözümler şöyle
1 Use prototype
For the web application, we could consider add annotation @Scope(“prototype”) on controller or @Scope(“request”). For non-web application, we could add @Scope(“prototype”) on the class annotated with @Component

2. Use ThreadLocal

3. Use local variable

4. ConcurrentHashMap, ConcurrentHashSet

5. Use third-party middle-ware to store shared data


Hiç yorum yok:

Yorum Gönder