Встречается на 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
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы