Доступ к компоненту из класса, который реализует WebApplicationInitializer

#spring #spring-mvc #initialization

#spring #spring-mvc #инициализация

Вопрос:

Именно здесь я хочу получить доступ к компонентам

  public class MyWebApplicationInitializer implements WebApplicationInitializer {
    
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
         ....
       
         Show show = new Show(); 
         ....      
    }
}
  

Здесь мы управляем нашими компонентами:

 @Configuration
public class MyBeans {
     @Bean
     public Magic magic() {
        return new Magic();
     }
     @Bean
     public Magician magician() {
        return new magician();
     }

}
  

Это класс Magician:

  @Component 
 public class Magician {
   @Autowire
   Magic magic;     
   ....(other functions)
 }
  

Это класс для показа:

 @Component 
 public class Magician {
   @Autowire
   Magician magician;     
   ....(other functions)
 }
  

Я ищу способ для моего объекта Show использовать компонент Magician, созданный в классе My beans. В настоящее время он не использует компонент, потому что я использую new для создания экземпляра show, а это означает, что он не управляется spring. Я видел, что существуют реализации, выполняемые с использованием перехватчика AspectJ или с использованием контекста приложения. Однако при добавлении следующей строки: ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); в мой класс веб-инициализатора я получаю сообщение об ошибке, указывающее, No WebApplicationContext found: no ContextLoaderListener registered? что я не совсем уверен, куда идти дальше.

Комментарии:

1. Можете ли вы поделиться классом Show ? Кажется, что вы поделились в два раза классом Magician

2. Вы не можете. Поскольку WebApplicationInitializer это место, где все загружается. Зачем вам нужен ваш Show в этом классе?