Встречается на 2% собеседований по Java

Можно ли создать свой Scope бинов

Да, можно создать свой Scope бинов в Spring. Для этого нужно реализовать интерфейс org.springframework.beans.factory.config.Scope и зарегистрировать его в контексте.

Пример:

java
public class CustomScope implements Scope {
    private Map<String, Object> scopedObjects = new ConcurrentHashMap<>();

    @Override
    public Object get(String name, ObjectFactory<?> objectFactory) {
        return scopedObjects.computeIfAbsent(name, k -> objectFactory.getObject());
    }
text
@Override
public Object remove(String name) {
    return scopedObjects.remove(name);
}

// Другие методы интерфейса...

}

// Регистрация:
@Configuration
public class AppConfig {
@Bean
public static CustomScope customScope() {
return new CustomScope();
}

text
@Bean
public static BeanFactoryPostProcessor beanFactoryPostProcessor() {
    return factory -> factory.registerScope("custom", customScope());
}

}

// Использование:
@Component
@Scope("custom")
public class MyScopedBean { ... }

text

Ключевые моменты:
1. Нужно реализовать все методы интерфейса Scope
2. Зарегистрировать scope через BeanFactoryPostProcessor
3. Можно использовать аннотацию @Scope с именем вашего scope
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы