티스토리 뷰
[스프링퀵스타트]Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'userService' is defined
ITGenerations 2019. 12. 27. 21:32|에러문구
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'userService' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
at com.springbookbiz.user.UserServiceClient.main(UserServiceClient.java:15)
컴포넌트를 어노테이션으로 변경하면서 발생한 에러다. 어노테이션으로 수정한 부분 원상복귀하고 컴포넌트방식으로 작동하니 정상작동한다. 다만, 어노테이션으로 적용하면서 별 소스를 건드리지 않았음에도 불구하고 위와 같은 에러가 발생했다.
|에러 원인
applicationContext.xml 파일에서 bean의 경로를 잘못 설정해줬기 때문에 에러가 발생했다.
원래 경로는 <context:component-scan base-package="com.springbook.biz"/>였다. 근데 내가 생성한 파일들의 경로는
com.springbookbiz였던것이다. 이것이 잘못됐다고 생각을 못했었는데 에러 문구를 계속해서 보고 무슨 의미인가 해석하고 분석하니 경로의 원인들을 하나하나 살편봤다. 결국에 주소가 잘못됐기 때문에 위와 같은 에러가 발생했다.
|applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<context:component-scan base-package="com"/>
<!-- <bean id="userService" class="com.springbookbiz.user.impl.UserServiceImpl">
<property name="userDAO" ref="userDAO"/>
</bean>
<bean id="userDAO" class="com.springbookbiz.user.impl.UserDAO"/> -->
<!--
<context:component-scan base-package="polymorphism"></context:component-scan>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV"></bean>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV" init-method="initMethod"/>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV" destroy-method="destroyedMethod"/>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV" lazy-init="true"/>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV" scope="singleton"/>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV" scope="prototype"/>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV" scope="session"/>
<bean id="tv" class="polymorphism.SamsungTV" scope="request"/>
위 두 가지는 에러가 발생한다.
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV">
<constructor-arg ref="apple"></constructor-arg>
<constructor-arg value="270000"></constructor-arg>
</bean>
<bean id="apple" class="polymorphism.AppleSpeaker"/>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV">
<property name="speaker" ref="apple"></property>
<property name="price" value="270000"></property>
</bean>
-->
<!--
<bean id="tv" class="polymorphism.SamsungTV"
p:speaker-ref="sony" p:price="270000"/>
<bean id="sony" class="polymorphism.SonySpeaker"/>
<bean id="apple" class="polymorphism.AppleSpeaker"/>
-->
<!--
-->
<!--
<bean id="collectionBean"
class="com.springbook.ioc.injection.CollectionBean">
-->
<!--
1. List 타입
<property name="addressList">
<list>
<value>서울시 강남구 역삼동</value>
<value>서울시 성동구 행당동</value>
</list>
</property>
-->
<!--
2. Set 타입
<property name="addressList">
<set value-type="java.lang.String">
<value>서울시 강남구 역삼동</value>
<value>서울시 성동구 성수동</value>
<value>경기도 하남시 미사동</value>
</set>
</property>
-->
<!--
3. Map타입
<property name="addressList">
<map>
<entry>
<key><value>고길동</value></key>
<value>서우릿 강남구 역삼동</value>
</entry>
<entry>
<key><value>마이콜</value></key>
<value>서울시 강서구 화곡동</value>
</entry>
</map>
</property>
<property name="addressList">
<props>
<prop key="고길동">서울시 강남구 역삼동</prop>
<prop key="마이콜">서울시 강서구 화곡동</prop>
</props>
</property>
</bean>
<bean id="tv" class="polymorphism.LgTV"></bean>
-->
<!--
SonySpeaker 객체 의존성 주입
<beans>
<context:component-scan base-package="polymorphism"></context:component-scan>
<bean class="polymorphism.SonySpeaker"></bean>
</beans>
-->
<!--
AppleSpeaker 객체 의존성 주입
<beans>
<context:component-scan base-package="polymorphism"></context:component-scan>
<bean class="polymorphism.AppleSpeaker"></bean>
</beans>
-->
</beans>
|해결방법
빈주소를 com으로 바꾸거나 com.springbookbiz로 수정해야한다.
component-scan은 해당 경로에 있는 파일을 모두 스캔한다는 의미인데 경로가 잘못되면 스캔을 못하기 때문에 에러가 발생한다는 점을 명심하면될 것 같다.
'스프링' 카테고리의 다른 글
[스프링퀵스타트] Exception in thread "main" org.springframework.beans.factory.BeanCreationException (0) | 2020.01.09 |
---|---|
[스프링퀵스타트] 어노테이션 동작 시점 정리 (0) | 2020.01.07 |
[스프링퀵스타트]java.lang.classnotfoundexception org.h2.driver (0) | 2019.12.27 |
[스프링퀵스타트] 톰캣 에러 발생 및 해결 (0) | 2019.11.25 |
POJO vs Not POJO란? (0) | 2019.11.24 |
- Total
- Today
- Yesterday
- 카라멜팝콘
- 프로그클럽
- 온리 프라이스 카라멜맛 팝콘
- javaw.exe
- JdbcTemplate
- 엠프레스 파타야 호텔
- 자바
- 개발자영어
- 캐나다
- 2020
- 프로그
- yyc
- OOP
- 호텔
- 온리프라이스
- 새해맞이
- 엠프레스
- 온리프라이스카라멜팝콘
- 캘거리
- 개발자
- 프로그래밍언어
- 스프링
- 프랑스 정품 직구 프랑스 옴므 알뤼르 옴므 에디션 블량쉐
- 변수
- happy new year
- 워킹홀리데이
- 귀국
- 캘거리 국제 공항
- 량량
- 스프링 퀵 스타트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |