Spring IoC контейнер: обзор Bean, создание экземпляра Bean с помощью статического фабричного метода

При определении bean-компонента, создаваемого с помощью статического метода фабрики, используйте атрибут class, чтобы указать класс, содержащий статический метод фабрики, и атрибут с именем factory-method, чтобы указать имя самого метода фабрики. Вы должны иметь возможность вызывать этот метод (с необязательными аргументами, как описано ниже) и возвращать живой объект, который впоследствии обрабатывается, как если бы он был создан с помощью конструктора. Одним из применений такого определения компонента является вызов статических фабрик в унаследованном коде.

Следующее определение bean-компонента указывает, что bean-компонент создается путем вызова метода фабрики. Определение не указывает тип (класс) возвращаемого объекта, только класс, содержащий фабричный метод. В этом примере метод createInstance() должен быть статическим методом. В следующем примере показано, как указать фабричный метод:

<bean id="clientService"
    class="examples.ClientService"
    factory-method="createInstance"/>

В следующем примере показан класс, который будет работать с предыдущим определением компонента:

Java

public class ClientService {
    private static ClientService clientService = new ClientService();
    private ClientService() {}

    public static ClientService createInstance() {
        return clientService;
    }
}

Kotlin

class ClientService private constructor() {
    companion object {
        private val clientService = ClientService()
        fun createInstance() = clientService
    }
}


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки