Sobes.tech
Middle — Middle+
115

Hoe kan worden gegarandeerd dat een Bean bij elke aanroep met unieke kenmerken wordt gemaakt?

Bedrijven waar gevraagd werd
Драйв Клик

Antwoord van AI

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 или фабрики, чтобы каждый вызов создавал новый объект с уникальными характеристиками.