Опишите бины через @Configuration/@Bean, создайте AnnotationConfigApplicationContext с этой конфигурацией и запросите BeanA.class. Контекст после использования нужно закрыть.
Инициализация Spring‑контекста и извлечение бина BeanA
Опишите бины через @Configuration/@Bean, создайте AnnotationConfigApplicationContext с этой конфигурацией и запросите BeanA.class. Контекст после использования нужно закрыть.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте Spring‑контекст и получите бин BeanA через метод getBean. Требования:
- Запустить Spring‑контекст.
- Описать BeanA и его зависимости как Spring‑бины.
- Вызвать
getBean(BeanA.class)для получения экземпляра.
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class JetbulbInterview {
public static void main(String[] args) {
// Запуск Spring-приложения
// getBean(BeanA.class);
}
}
class BeanA {}
class BeanB {}
class BeanDependencyA {}
class BeanDependencyB {}
Ответ
Опишите бины через @Configuration/@Bean, создайте AnnotationConfigApplicationContext с этой конфигурацией и запросите BeanA.class. Контекст после использования нужно закрыть.
@Configuration
class Config {
@Bean BeanDependencyA dependencyA() { return new BeanDependencyA(); }
@Bean BeanDependencyB dependencyB() { return new BeanDependencyB(); }
@Bean BeanA beanA(BeanDependencyA dependency) { return new BeanA(dependency); }
@Bean BeanB beanB(BeanDependencyB dependency) { return new BeanB(dependency); }
}
class BeanA {
private final BeanDependencyA dependency;
BeanA(BeanDependencyA dependency) { this.dependency = dependency; }
}
class BeanB {
private final BeanDependencyB dependency;
BeanB(BeanDependencyB dependency) { this.dependency = dependency; }
}
В main:
try (var context = new AnnotationConfigApplicationContext(Config.class)) {
BeanA bean = context.getBean(BeanA.class);
}
Связи A→DependencyA и B→DependencyB выбраны явно, поскольку исходные классы пусты. Классы зависимостей остаются из условия, аннотации импортируются из org.springframework.context.annotation.