Sobes.tech
Middle — Middle+
114

Чӣ гуна метавон кафолат дод, ки Bean дар ҳар дафъа бо хусусиятҳои беназир эҷод мешавад?

Ширкатҳо дар куҷо пурсиданд
Драйв Клик

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