Рубрики
Без рубрики

Путеводитель по весеннему бобовому заводу

В этой статье исследуется API BeanFactory Spring и приводится пример его использования.

Автор оригинала: baeldung.

1. введение

Эта статья будет посвящена изучению API Spring BeanFactory .

Интерфейс BeanFactory предоставляет простой, но гибкий механизм настройки для управления объектами любой природы с помощью контейнера Spring IoC. Давайте рассмотрим некоторые основы, прежде чем углубляться в этот центральный API Spring.

2. Основы – Фасоль и контейнеры

Проще говоря, бобы-это объекты java, которые образуют основу приложения Spring и управляются контейнером Spring IoC. Помимо управления контейнером, в бобе нет ничего особенного (во всех остальных отношениях это один из многих объектов в приложении).

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

3. Зависимости Maven

Давайте добавим необходимую зависимость Maven | в pom.xml файл. Мы будем использовать зависимость Spring Beans для настройки BeanFactory:


    org.springframework
    spring-beans
    5.2.8.RELEASE

4. Интерфейс BeanFactory

Интересно начать с того, чтобы взглянуть на определение интерфейса в org.springframework.beans.factory package и обсудить некоторые из его важных API здесь.

4.1. API getBean()

Различные версии метода |/getBean() возвращают экземпляр указанного компонента, который может быть общим или независимым в приложении.

4.2. API containsBean()

Этот метод подтверждает, содержит ли эта фабрика бобов боб с заданным именем. Более конкретно, он подтверждает, что getBean(java.lang.String) возможность получения экземпляра компонента с заданным именем.

4.3. API isSingleton()

API isSingleton можно использовать для запроса, является ли этот компонент общим синглтоном. То есть, если getBean(java.lang.String) всегда будет возвращать один и тот же экземпляр.

4.4. API прототипа()

Этот API подтвердит, если getBean(java.lang.String) возвращает независимые экземпляры – то есть боб, настроенный с областью прототипа, или нет.

Важно отметить, что этот метод, возвращающий false , явно не указывает на одноэлементный объект. Он указывает на несамостоятельные экземпляры, которые также могут соответствовать другим областям.

Нам нужно использовать isSingleton(java.lang.Строка) операция явной проверки общего экземпляра синглтона.

4.5. Другие API

В то время как метод isTypeMatch(имя строки, класс TargetType) проверяет, соответствует ли боб с заданным именем указанному типу, GetType ( String name ) полезен для идентификации типа боба с заданным именем.

Наконец, getAliases ( String | name ) возвращает псевдонимы для данного имени компонента, если таковые имеются.

5. BeanFactory API

BeanFactory содержит определения компонентов и создает их экземпляры всякий раз, когда клиентское приложение запрашивает их, что означает:

  • Он заботится о жизненном цикле компонента, создавая его экземпляр и вызывая соответствующие методы уничтожения
  • Он способен создавать ассоциации между зависимыми объектами при их создании
  • Важно отметить , что BeanFactory не поддерживает внедрение зависимостей на основе аннотаций, в то время как ApplicationContext , надмножество BeanFactory

Обязательно прочтите Контекст приложения , чтобы узнать, что он может сделать дополнительно.

6. Определение боба

Давайте определим простой боб:

public class Employee {
    private String name;
    private int age;
    
    // standard constructors, getters and setters
}

7. Настройка BeanFactory с помощью XML

Мы можем настроить BeanFactory с помощью XML. Давайте создадим файл bean factory-example.xml:


    
    
    

Обратите внимание, что мы также создали псевдоним для компонента employee .

8. BeanFactory с ClassPathResource

ClassPathResource принадлежит org.springframework.core.io пакет. Давайте проведем быстрый тест и инициализируем XmlBeanFactory с помощью ClassPathResource , как показано ниже:

public class BeanFactoryWithClassPathResourceTest {

    @Test
    public void createBeanFactoryAndCheckEmployeeBean() {
        Resource res = new ClassPathResource("beanfactory-example.xml");
        BeanFactory factory = new XmlBeanFactory(res);
        Employee emp = (Employee) factory.getBean("employee");

        assertTrue(factory.isSingleton("employee"));
        assertTrue(factory.getBean("employee") instanceof Employee);
        assertTrue(factory.isTypeMatch("employee", Employee.class));
        assertTrue(factory.getAliases("employee").length > 0);
    }
}

9. Заключение

В этой краткой статье мы узнали об основных методах, предлагаемых Spring BeanFactory API, а также о примере, иллюстрирующем конфигурацию и ее использование.

Код, поддерживающий эти примеры, доступен на GitHub .