Коли ти створюєш визначення біна, то закладаєш набір правил створення фактичних екземплярів класу, визначеного цим визначенням біна. Думка про те, що визначення біна є набором правил дуже важлива, оскільки вона означає, що, як і у випадку з класом, можна створити безліч екземплярів об'єктів з одного набору правила.

Можна керувати не лише різними залежностями та конфігураційними значеннями, які потрібно підключити до об'єкта, що створюється з конкретного визначення біну, а й контролювати область видимості об'єктів, що створюються з конкретного визначення біна. Цей підхід має великі переваги і є гнучким, оскільки можна вибирати область видимості об'єктів, які ти створюєш за допомогою конфігурації замість того, щоб готувати область видимості об'єкта на рівні класу Java. Біни можна визначити для розгортання однієї з кількох областей видимості. Spring Framework підтримує шість областей видимості, чотири з яких доступні тільки в тому випадку, якщо ти використовуєш орієнтований на використання у вебсередовищі (web-aware) ApplicationContext. Також можна створити спеціальну область видимості.

У наступній таблиці описані підтримувані області видимості:

Таблиця 3. Області видимості біна
Область застосування Опис

об'єкт-одинак (singleton)

(За замовчуванням) Застосовує область видимості єдиного визначення біна до єдиного екземпляра об'єкта для кожного IoC-контейнера Spring.

прототип (prototype)

Застосовує область видимості єдиного визначення біна для будь-якої кількості екземплярів об'єктів.

запит (request)

Застосовує область видимості визначення єдиного біна для життєвого циклу єдиного HTTP-запиту. Таким чином, для кожного нового HTTP-запиту створюється новий екземпляр біна на основі єдиного визначення біна. Діє лише в контексті орієнтованого на використання у вебсередовищі (web-aware) ApplicationContext фреймворку Spring.

сесія (session)

Застосовує область видимості єдиного визначення біна для життєвого циклу HTTP Session. Діє лише в контексті орієнтованого на використання у вебсередовищі (web-aware) ApplicationContext фреймворку Spring.

додаток (application)

Застосовує область видимості єдиного визначення біна для життєвого циклу ServletContext. Діє лише в контексті орієнтованого на використання у вебсередовищі (web-aware) ApplicationContext фреймворку Spring.

вебсокет (websocket)

Застосовує область видимості єдиного визначення біна для життєвого циклу WebSocket. Діє лише в контексті орієнтованого на використання у вебсередовищі (web-aware) ApplicationContext фреймворку Spring.

Починаючи з версії Spring 3.0, стала доступна потокова область, але вона не реєструється за замовчуванням. Для отримання додаткової інформації див. документацію SimpleThreadScope. Інструкції з реєстрації цієї або будь-якої іншої області видимості див. у розділі Використання спеціальної області видимості.