Встречается на 2% собеседований по Java
Как бы написал часть Spring Framework, который бы создавал объекты из полей с @Bean
Вот пример реализации простого контейнера, который сканирует классы и создает бины из методов с аннотацией @Bean:
java
public class SimpleBeanContainer {
private Map<String, Object> beans = new HashMap<>();
public void register(Class<?> configClass) throws Exception {
Object configInstance = configClass.getDeclaredConstructor().newInstance();
for (Method method : configClass.getDeclaredMethods()) {
if (method.isAnnotationPresent(Bean.class)) {
Object bean = method.invoke(configInstance);
beans.put(method.getName(), bean);
}
}
}
text
public <T> T getBean(String name, Class<T> type) {
return type.cast(beans.get(name));
}}
text
Основные моменты:
1. Используем рефлексию для поиска методов с `@Bean`
2. Создаем экземпляр конфигурационного класса
3. Вызываем методы-бины и сохраняем результаты
4. Предоставляем доступ к бинам по имени
Пример использования:
```java
@Configuration
class AppConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
SimpleBeanContainer container = new SimpleBeanContainer();
container.register(AppConfig.class);
DataSource ds = container.getBean("dataSource", DataSource.class);
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы