Уверяю, что Spring bean является синглтон - PullRequest
1 голос
/ 03 февраля 2012

Как я могу убедиться, что бин Spring является синглтоном?

Я бы реализовал интерфейсы ApplicationContext, InitializingBean и BeanNameAware.

В afterPropertiesSet() Я бы назвал isSingleton(String) с именем Бина.

Есть ли ещеспособ убедиться, что Бин является синглтоном?

Поскольку согласно API :

Обратите внимание, что обычно не рекомендуется, чтобы объект зависел отего имя компонента, поскольку оно представляет потенциально хрупкую зависимость от внешней конфигурации, а также, возможно, ненужную зависимость от Spring API.

Ответы [ 2 ]

5 голосов
/ 03 февраля 2012

Если я правильно помню, bean-объект, управляемый пружиной, будет по умолчанию одноэлементным (для текущих версий библиотеки-пружин), если только вы не определите область действия типа «prototype».

Проверка: Объем по умолчанию для фасоли

Цитата:

Синглтонная область - это область по умолчанию в Spring

2 голосов
/ 03 февраля 2012

Вы можете сделать это " Путь Java " с AtomicBoolean флагом:

private static final created = new AtomicBoolean();

@PostConstruct
public void ensureSingleInstance() {
    if(created.getAndSet(true)) {
        throw new IllegalStateException("Trying to create second instance");
    }
}

Но тебе действительно нужно такое утверждение? Фасоль имеет scope="singleton" по умолчанию ...

...