*전자정부프레임워크
프로젝트를 만들고,
Controller를 만들고, annotation으로 @Controller를 지정해주었다.
AbstractServiceImpl을 상속받는 Service를 하나 만들고,
annotation을 @Service("testService")로 지정해주었다.
아까 만든 Controller에서,
서비스 변수를 하나 만들고, @Resource(name="testService")로,
아까 만들었던 Service 클래스에 붙인 @Service와 동일한 이름으로 맞춰주었다.
오마이갓.
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named testService" is defined
이거때문에 완전 헤맸다..
아무리봐도.. 뭘 잘못했는지 못찾았다.
Resource명과 Service명은 분명 일치하는데..뭐가 문제란 말인가!!
Controller는 잘 돌아가는데..왜 Service만 못 찾지??
resource폴더가 deploy되지 않아도 해당 문제가 발생한다지만, 내 경우는 아니었다.
나는 이렇게 해결했다.
(egov 샘플 프로젝트에서 설정파일을 그대로 copy&paste한게 잘못이었다 ㅠㅠ)
dispatcher-servlet.xml
<context:component-scan base-package="egovframework"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> |
Service와 Repository에 관한 annotation이 exclude-filter 되어있다.
Service와 Repository는 annotation을 필터링 하지 않는다는 이야기.
일단은 위에 base-package를 내 패키지명에 맞춰서 수정해준다.
그런 다음 context-common.xml을 연다.
아래 내용이 있나 확인해 본 후 없으면 추가해준다.
<context:component-scan base-package="egovframework"> |
base-package는 내 패키지에 맞춰주고,
Service와 Repository관련 annotation을 include 시켜주고 있다.
아직 초보라 왜 그런지는 모르겠으나..
egovSample 프로젝트 기준으로.. 위와같이 되어있다.
dispatcher-servlet.xml에서는 Controller만 include하고,
context-common.xml에서 Service와 Repository를 include하는 방식으로..
base-package를 맞춰주지 않으면,
해당 경로를 찾지 못해 annotation인식이 안되므로, base-package를 맞춰주는 것도 중요*
안드로이드만 하다가,
web을 하려니까 모르는거 투성이다 :(
맨날 삽질이야
'내컴퓨터 > 컴퓨터사용하기' 카테고리의 다른 글
CSS explorer9에서 background 안먹힐때 (0) | 2014.10.21 |
---|---|
JAVA Build Path Problems (0) | 2014.09.24 |
초간단 리눅스 명령어 (0) | 2014.09.18 |
Apache+Tomcat 연동 WEB-INF 접근 제어 (0) | 2014.09.18 |
Tomcat 실행이 안될 때. (0) | 2014.09.18 |