Spring Boot 2.x здесь. В настоящее время у меня есть куча bean-компонентов, определенных внутри класса @Configuration
, например:
@Configuration
public class SomeConfig {
@Bean
public Fizz fizz() { ... }
@Bean
public Buzz buzz() { ... }
}
Обычно Spring запускает этот класс и создает экземпляры этих bean-компонентов при startup . Однако в моем случае я хочу, чтобы Spring пропустил , загружая этот класс (и создавая его компоненты) при запуске, и вместо этого делал это программно / по требованию, что-то вроде этого:
public void processRequest(SomeRequest request) {
Fizz fizz = SpringAdhocLoader.load(SomeConfig.class, Fizz.class);
Buzz buzz = SpringAdhocLoader.load(SomeConfig.class, Buzz.class);
// use these two beans in this method somehow
}
Есть очень конкретная причина, почему я должен сделать это, которая выходит за рамки этого вопроса. Поэтому я бы действительно оценил бы ответ: " Да, вы можете это сделать, и вот как ... " или " Нет, этого нельзя сделать с помощью Spring ивот почему ...", вместо ответов / комментариев, спрашивающих меня почему Я хочу это сделать. Поверьте мне, мне нужно!
В конце дня я ищу способ сказать Spring не , чтобы создать экземпляр всех бинов в моем классе SomeConfig
до другогочасть моего кода специально хочет, чтобы они были созданы. Возможно ли это, и если да, то как?
Обновление
Что если Fizz
выглядит следующим образом:
@Component
public class Foobar {
...
}
public class Fizz {
@Autowired
private Foobar foobar;
...
}
Будет аннотация @Lazy
на SomeConfig
все еще предотвращать создание экземпляра Fizz
, даже если он автоматически подключен / введен с зависимостью @Component
?