스프링에서 발생하는 에러중 단연 으뜸 중 하나가, Error creating bean with name 일 것이다. 이 에러는 문장 그대로, Bean 생성시 에러가 나는 것이다. Bean 생성 시 에러는 너무나도 많은 원인을 가지고 있지만, 여기서는 "org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type" 이 문제에 대해서만 적어보도록 한다.
에러문구
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ramiController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private co.kr.test.wednesday.api.WednesDayAPI co.kr.test.rami.controller.RamiController.wednesDay; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [co.kr.test.wednesday.api.WednesDayAPI] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
javax.servlet.GenericServlet.init(GenericServlet.java:160)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
위 에러는, 빈(Bean)을 만들려고 하는데 매칭된 Bean이 없다는 의미이다. 대부분에 이런 경우는 패키지명을 scan 설정과 다르게 하여 생기는 문제가 많으며 이럴 경우 두가지 방법으로 처리 할 수 있다.
처리방법
- 패키지명을 다른 양식과 비슷하게 생성한다
- servlet-context.xml 파일을에 scan 문구를 생성한다
servlet-context.xml에 처리방법
기존의 패키지가 test만 있을 때, test2의 패키지를 새로 하고 싶을 경우 아래와 같이 컴포넌트를 추가한다
<context:component-scan base-package="co.kr.test" />
<context:component-scan base-package="co.kr.test2" />
'Stackoverflow > Java' 카테고리의 다른 글
mysql connector의 버전에 따른, 톰캣 오류 (0) | 2018.05.08 |
---|---|
스프링(Spring)에서 글자가 깨질 경우 (0) | 2017.12.15 |
JSON 파싱시, Unexpected character (t) at position 에러 (0) | 2017.11.10 |
The literal of type int is out of range 에러 발생 대처 (0) | 2017.09.06 |
Unsupported major.minor version 52.0 (0) | 2017.09.01 |