Spring Beans

Базовый Spring
≈ 1 мин чтения

Bean — обычный объект под управлением Spring

Слово bean звучит как специальный тип объекта, но отдельного класса Bean в Spring нет. Bean — это обычный Java-объект, который создан или зарегистрирован в контейнере и жизненным циклом которого управляет Spring.

@Service
class PriceService {
    int calculate(int basePrice) {
        return basePrice;
    }
}

Если Spring обнаружит этот класс и зарегистрирует его в контексте, экземпляр PriceService станет bean. Если тот же класс создать вручную через new PriceService(), получившийся объект сам по себе bean не станет.

Почему это различие важно

Контейнер знает о своих beans: может передавать им зависимости, применять к ним инфраструктурную обработку и учитывать их при сборке других объектов. У объекта, созданного вручную вне контейнера, такой связи со Spring нет.

У bean есть тип, имя и набор метаданных, по которым контейнер понимает, как его создавать и использовать. Обычно прикладному коду важнее всего тип: именно по нему Spring часто подбирает подходящую зависимость.

Spring управляет не классами, а экземплярами. Аннотация или конфигурация описывает, какой объект должен появиться в контейнере. Сам по себе класс ещё не означает, что его экземпляр уже является bean.