2016년 8월 15일 월요일

스프링 퀵스타트 4 일차

3일정도 쉬었다.

다시 보려니까 기억이 가물가물...

페이지 349부터 기존의 스프링 MVC 방식의 게시판을

어노테이션 방식으로 수정하는 작업을 해보고 있는데

presentation-layer.xml에서  컨텍스트 NS를 등록 하는것부터 시작한다.

여기서 뭔가 오타가 있었는지 ... 이런 에러를 내뿜는다.

java.lang.NoClassDefFoundError

에러가 발생한곳을 따라가보니 InsertBoardController에서 호출하는
BoardDAO의 insertBoard 메서드의
JDBCUtil.close(stmt,conn);
이부분을 가리키며 NoClassDefFoundError를 표시하고있다.

내생각엔 presentation-layer에서
<context:component-scan base-package="com.springbook.view">

여기서 view만 가리키고   com.springbook.biz는 안가리켜서 그런게 아닐까 하고 의심하여
(여기서 가르키는 부분의 객체를 생성한다고 설명되어있으니...)

com.springbook.biz도 추가하거나 com.springbook 까지만 입력해 보았는데

이번엔 beansfactory.NoSuchBeanDefinitionException이 뜬다

관련에러를 찾아보니까 @Service를 잘못 설정해줬다는 의견들이 많다

흠 그래서 다시 com.springbook.view로 고쳐주고 다시 실행해봤는데 정상적으로 글이 등록
되버렸다. 뭘까? 원인도 못찾고 그냥 에러메시지가 없어져버리니까 뭔가 겁이난다.

왜그런 에러메시지가 나왔던걸까?



결국 비슷한 내용이 402페이지에 설명되어있다.

사용자 요청이 들어오면

DispatcherServlet은 presentation-layer.xml을 로딩하고

스프링컨테이너를 구동한다.

이때 BoardController객체만 메모리에 생성되고 @Autowired로 의존성 주입할 BoardServiceImpl객체는 생성되지않는다

boardcontroller보다 의존성 주입될 boardServiceImpl객체가 먼저 생성되어 있어야 한다.



406페이지까지 - ContextLoaderListener 를 프리로딩 하여 나오는 결과를 볼수있었다.
로그
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue Aug 16 12:52:13 KST 2016]; root of context hierarchy
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
INFO : org.springframework.context.support.PropertySourcesPlaceholderConfigurer - Loading properties file from class path resource [config/database.properties]
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 964 ms
8월 16, 2016 12:52:14 오후 org.apache.coyote.AbstractProtocol start
정보: Starting ProtocolHandler ["http-nio-8080"]
8월 16, 2016 12:52:14 오후 org.apache.coyote.AbstractProtocol start
정보: Starting ProtocolHandler ["ajp-nio-8009"]
8월 16, 2016 12:52:14 오후 org.apache.catalina.startup.Catalina start
정보: Server startup in 1976 ms
8월 16, 2016 12:53:02 오후 org.apache.catalina.core.ApplicationContext log
정보: Initializing Spring FrameworkServlet 'action'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'action': initialization started
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'action-servlet': startup date [Tue Aug 16 12:53:02 KST 2016]; parent: Root WebApplicationContext
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/config/presentation-layer.xml]

INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/deleteBoard.do] onto handler 'boardController'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/updateBoard.do] onto handler 'boardController'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/insertBoard.do] onto handler 'boardController'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/getBoard.do] onto handler 'boardController'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/getBoardList.do] onto handler 'boardController'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/login.do] onto handler 'loginController'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/logout.do] onto handler 'logoutController'
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'action': initialization completed in 158 ms

댓글 없음: