스프링부트 순환참조

less than 1 minute read

1. 문제

  • 컴포넌트 클래스에서 HandlerExceptionResolver 를 생성자로 주입받게 되면 org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration 와 순환 참조가 일어난다.
  • 순환참조떄문에 NoSuchBeanDefinitionException 발생한다.

2. 원인

  • 익셉션이 발생되는 것으로 추측되는 스프링 코드이다.
      public class WebMvcAutoConfiguration {
            
      ...
          @Override
          protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer(
                  FormattingConversionService mvcConversionService, Validator mvcValidator) {
              try {
                  return this.beanFactory.getBean(ConfigurableWebBindingInitializer.class);
              }
              catch (NoSuchBeanDefinitionException ex) {
                  return super.getConfigurableWebBindingInitializer(mvcConversionService, mvcValidator);
              }
          }
             
      }
    

3. 해결

  • HandlerExceptionResolver 를 생성자로 주입받지 않고 @Autowired 로 주입받아 해결하였다.
-->

Categories:

Updated:

Comments