Middle
Кои са съществуващите области на видимост (scopes) при биновете в Spring?
sobes.tech AI
Отговор от AI
В Spring Framework съществуват няколко стандартни области на видимост за биновете:
- singleton
- prototype
- request
- session
- application
- websocket
| Област на видимост | Описание |
|---|---|
| singleton | Един екземпляр на бина за всеки контекст на Spring. По подразбиране. |
| prototype | Нов екземпляр на бина се създава при всяко искане. |
| request | Един екземпляр на бина за всяко HTTP искане. |
| session | Един екземпляр на бина за всяка HTTP сесия. |
| application | Един екземпляр на бина за всеки ServletContext. Използва се от уеб приложения. |
| websocket | Един екземпляр на бина за всяка WebSocket сесия. |
Областите на видимост request, session, application и websocket са актуални в уеб контекста (например при използване на Spring MVC).
Областта на видимост може да бъде указана с помощта на анотацията @Scope:
// Пример singleton
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("singleton") // Явно указано, въпреки че е по подразбиране
public class SingletonBean {
// ...
}
// Пример prototype
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class PrototypeBean {
// ...
}