Sobes.tech
Middle — Middle+
113

Cum se poate garanta că un Bean va fi creat cu caracteristici unice la fiecare apel?

Companiile au fost întrebate
Драйв Клик

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