title: How to Solve org.springframework.beans.factory.BeanCreationNotAllowedException?
body: <blockquote>
  <p>I am working on the project from a youtube tutorial and get stuck at this Exception.How to Solve org.springframework.beans.factory.BeanCreationNotAllowedException?</p>
  </blockquote>
  <p>I am working on the project from a youtube tutorial and get stuck at this Exception. I have seen similar problems here on Stack Overflow but there is an incorrect import problem. I have Checked my Import and there is no problem. I tried to move this file to root and again I caught the same error. I have Tried finding solutions on youtube and On the web also But I didn't get it Anyware. Please help me find out the solution.</p>
  <p>Source : <a href="https://github.com/DnyaneshwarKolhe/Bookstore.git" rel="nofollow noreferrer">https://github.com/DnyaneshwarKolhe/Bookstore.git</a></p>
  <pre><code>Exception in thread &quot;task-2&quot; org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'delegatingApplicationListener': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
              at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
              at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
              at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
              at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:245)
              at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:197)
              at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:134)
              at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:404)
              at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:361)
              at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher.publishEventIfRequired(DataSourceInitializedPublisher.java:99)
              at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher.access$100(DataSourceInitializedPublisher.java:50)
              at org.springframework.boot.autoconfigure.orm.jpa.DataSourceInitializedPublisher$DataSourceSchemaCreatedPublisher.lambda$postProcessEntityManagerFactory$0(DataSourceInitializedPublisher.java:200)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
              at java.base/java.lang.Thread.run(Thread.java:832)
          2021-02-08 09:47:56.074  INFO 10824 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
          2021-02-08 09:47:56.075  INFO 10824 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
          2021-02-08 09:47:56.094  INFO 10824 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
          2021-02-08 09:47:56.098  INFO 10824 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
          2021-02-08 09:47:56.112  INFO 10824 --- [           main] ConditionEvaluationReportLoggingListener : 
          
          Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
          2021-02-08 09:47:56.250 ERROR 10824 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 
          
          ***************************
          APPLICATION FAILED TO START
          ***************************
  
          Description:
          
          Field userSecurityService in com.bookstore.config.SecurityConfig required a bean of type 'com.bookstore.service.impl.UserSecurityService' that could not be found.
          
          The injection point has the following annotations:
              - @org.springframework.beans.factory.annotation.Autowired(required=true)
      
      
          Action:
          
          Consider defining a bean of type 'com.bookstore.service.impl.UserSecurityService' in your configuration.
  </code></pre>
  <p><strong>UserSecurityService.java</strong></p>
  <pre><code>package com.bookstore.service.impl;
          
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.security.core.userdetails.UserDetails;
  import org.springframework.security.core.userdetails.UserDetailsService;
  import org.springframework.security.core.userdetails.UsernameNotFoundException;
          
  import com.bookstore.domain.User;
  import com.bookstore.repository.UserRepository;
          
          
  public class UserSecurityService implements UserDetailsService {
          
      @Autowired
      private UserRepository userRepository;
                  
      @Override
      public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
              User user=userRepository.findByUsername(username);
                  
                  if(null == user) {
                      throw new UsernameNotFoundException(&quot;Username Not Found&quot;);
                  }
                  return user;
         }
          
   }
  </code></pre>
  <p><strong>SecurityConfig.java</strong></p>
  <pre><code>package com.bookstore.config;
          
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.core.env.Environment;
  import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
  import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
  import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
  import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
  
  import com.bookstore.service.impl.UserSecurityService;
  import com.bookstore.utility.SecurityUtility;
  
  @Configuration
  @EnableWebSecurity
  @EnableGlobalMethodSecurity(prePostEnabled = true)
  @ComponentScan(&quot;com.bookstore.service.impl.UserSecurityService&quot;) 
  public class SecurityConfig extends WebSecurityConfigurerAdapter{
          
      @Autowired
      private Environment env;
      
      @Autowired
      private UserSecurityService userSecurityService;
      
      private BCryptPasswordEncoder passwordEncoder() {
                  return SecurityUtility.passwordEncoder();
      }
              
       private static final String[] PUBLIC_MATCHERS = {
                  &quot;/css/**&quot;,
                  &quot;/js/**&quot;,
                  &quot;/image/**&quot;,
                  &quot;/&quot;,
                  &quot;/myAccount&quot;
      };
              
      @Override
      protected void configure(HttpSecurity http) throws Exception{
                  http
                          .authorizeRequests().
                          /*antMatchers(&quot;/**&quot;).*/
                          antMatchers(PUBLIC_MATCHERS).
                          permitAll().anyRequest().authenticated();
                  
                  http
                          .csrf().disable().cors().disable()
                          .formLogin().failureUrl(&quot;/login?error&quot;).defaultSuccessUrl(&quot;/&quot;)
                          .loginPage(&quot;/login&quot;).permitAll()
                          .and()
                          .logout().logoutRequestMatcher(new AntPathRequestMatcher(&quot;/logout&quot;))
                          .logoutSuccessUrl(&quot;/?logout&quot;).deleteCookies(&quot;remember-me&quot;).permitAll()
                          .and()
                          .rememberMe();
                          
      }
              
      @Autowired 
      public void configureGlobal(AuthenticationManagerBuilder auth)
                throws Exception{
                auth.userDetailsService(userSecurityService).passwordEncoder(passwordEncoder());
              }
               
  }
  </code></pre>