Встречается на 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);
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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