Sobes.tech
Назад к вопросам
Middle — Middle+
67

Каким образом можно гарантировать, что Bean будет создаваться с уникальными характеристиками при каждом вызове?

Компании, где спрашивали
Драйв Клик

Ответ от нейросети

sobes.tech AI

Чтобы гарантировать, что Bean создаётся с уникальными характеристиками при каждом вызове в Java (например, в Spring), нужно использовать scope с прототипом (prototype scope). В отличие от singleton, prototype Bean создаётся заново при каждом запросе.

Пример в Spring:

@Component
@Scope("prototype")
public class UniqueBean {
    private final String id = UUID.randomUUID().toString();

    public String getId() {
        return id;
    }
}

При каждом вызове из контекста Spring будет создаваться новый экземпляр с уникальным id.

Если Bean создаётся вручную или в других фреймворках, можно использовать фабричный метод или Builder, который при каждом вызове создаёт новый объект с уникальными параметрами.

Также можно использовать @Lookup метод в Spring для динамического получения нового экземпляра:

@Component
public class Client {

    @Lookup
    public UniqueBean getUniqueBean() {
        // Spring подменит реализацию, возвращая новый экземпляр
        return null;
    }

    public void doSomething() {
        UniqueBean bean = getUniqueBean();
        System.out.println(bean.getId());
    }
}

Таким образом, ключ — использовать прототипный scope или фабрики, чтобы каждый вызов создавал новый объект с уникальными характеристиками.