5

Что такое Spring-бины?

12

Я все еще не могу найти четкое определение Spring-бинов, которое бы смог понять. Я часто вижу ссылки на них в документации и книгах по Grails, но считаю, что понимание того, что это такое, было бы полезным.

Итак:

  1. Что такое Spring-бины?
  2. Как их можно использовать?
  3. Связаны ли они как-то с внедрением зависимостей?

5 ответ(ов)

0

Что такое Bean в Spring?

Bean — это POJO (Plain Old Java Object), который управляется контейнером Spring.

Контейнеры Spring по умолчанию создают только один экземпляр бина. Этот бин кэшируется в памяти, так что все запросы к бину возвращают общий объект, ссылающийся на один и тот же экземпляр.

Аннотация @Bean возвращает объект, который Spring регистрирует как бин в контексте приложения. Логика внутри метода отвечает за создание этого экземпляра.

Когда использовать аннотацию @Bean?

@Bean используется, когда автоматическая конфигурация невозможна. Например, когда нам нужно подключить компоненты из библиотеки третьей стороны, и у нас нет доступа к исходному коду, поэтому мы не можем аннотировать классы с @Component.

Реальный пример — подключение к бакету Amazon S3. Поскольку исходный код недоступен, нам придется создать бин.

@Bean
public AmazonS3 awsS3Client() {
    BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
    return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}

Источник кода выше → devglan.com

Поскольку я упомянул аннотацию @Component, отметим, что @Component указывает на то, что аннотированный класс является "компонентом". Такие классы считаются кандидатами для автоматического обнаружения при использовании конфигурации на основе аннотаций и сканирования классов.

Аннотация @Component регистрирует класс как единственный бин.

0

Spring-бины — это классы. Вместо того чтобы создавать экземпляр класса (с помощью оператора new), вы получаете экземпляр в виде bean, приведённый к нужному типу вашего класса, из контекста приложения, где bean — это то, что вы настроили в конфигурации контекста приложения. Таким образом, всё приложение поддерживает экземпляр с синглтон-областью на протяжении всего приложения. Все бины инициализируются в порядке их конфигурации сразу после создания контекста приложения. Даже если вы не используете никакие бины в вашем приложении, все экземпляры бинов уже созданы в момент создания контекста приложения.

0

В контексте приложения на Spring Boot bean - это просто объект Java, который создаётся фреймворком Spring при запуске приложения.

Назначение этого объекта может быть совершенно любым - это может быть конфигурация, сервис, фабрика соединений с базой данных и т.д. - фреймворку Spring это не важно.

Большинство beans зависят от других beans для своей работы. Например, менеджеру сущностей может понадобиться подключение к базе данных. Фреймворк Spring способен автоматически определить, как связать эти beans между собой. С точки зрения разработчика приложения вам нужно лишь объявить необходимые beans, и они "волшебным образом" появятся в вашем приложении, готовые к использованию.

0

Spring-бины — это просто экземпляры объектов, которые управляются контейнером IoC Spring. Контейнер IoC Spring отвечает за создание, поддержку и удаление бинов.

Мы можем добавить бин в Spring с помощью ручной настройки и автосвязывания. Ручная настройка (Wiring) подразумевает, что мы конфигурируем бин вручную в XML-файле. Автосвязывание (Auto Wiring) означает, что мы добавляем аннотации в Java-коде; затем Spring автоматически сканирует корневой контекст, где находится файл конфигурации Java, создаёт бин и добавляет его в контейнер Spring.

0

В Spring объекты, которые составляют основу вашего приложения и управляются контейнером инверсии управления (IoC), называются бинами. Бин — это просто объект, который создается, собирается и иначе управляется контейнером IoC Spring.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь