# 문제 발생
SpringMVC 프로젝트를 run on server 에 올려 실행했는데
Injection of resource dependencies failed; No bean named 'BoardService' available 에러가 발생했다.
+ No setter found for property 'datasource' in class 'org.mybatis.spring.SqlSessionFactoryBean' 도 발생했다.
# 에러 메시지
# 해결과정
No bean named 'BoardService' available 라는 단서로 BoardService 에 가보았다.
1) @Service 어노테이션은 선언되어 있었다.
2) servlet-context.xml 에서 component-scan 에서 패키지명도 맞게 작성했다.
3) servlet-context.xml 에서 xmlns 도 확인했다. 도대체 무슨 문제일까....
# 해결
1) No setter found for property 'datasource' in class 에러는
45번 라인의 name="datasource" 를 카멜케이스로 작성하지 않아 발생한 에러였다.
name 을 카멜케이스로 작성해야 했던 이유는 전역변수를 가져다 사용하였기 때문인데,
이 전역변수는 라이브러리에 DataSource dataSource; 로 되어있기에 맞춰주어야 했다.
찾아본 결과 35번 라인 id 와 45번 라인 ref 는 사용자 정의값으로 동일하면 문제없고, name 은 반드시 dataSource 여야 한다.
참고 https://mybatis.org/spring/ko/factorybean.html
org.springframework.jdbc.datasource.DriverManagerDataSource 라이브러리 .class 를 열어보면 setDriverClassName 을 확인할 수 있다. driverClassName 으로 변수선언이 되어있다는 것.
2) log4j 라이브러리가 있음에도 debug log 가 콘솔에서 확인되지 않았던 건, logger level 이 info 이기 때문이었다. log4j.xml 레벨을 info 에서 debug 로 수정하니, 비로소 콘솔에서 로그 확인이 가능해졌다.
콘솔 로그를 보면 test.do 요청으로 JDBC Connection 이 되어 select 문이 실행된 것이 확인된다.
그리고 포워딩 된 루트를 보면 board/home.jsp 로 가는데, board 폴더는 없다..
포워딩 루트가 잘못되어 404 NOT_FOUND 에러가 떴던 것이다..
DB연결 성공^^!
'ErrorLog' 카테고리의 다른 글
크롬 SameSite 에러 : A cookie associated with a cross-site resource (0) | 2020.06.23 |
---|---|
JDBC 에러 : org.springframework.jdbc.CannotGetJdbcConnectionException (0) | 2019.10.12 |
jQuery CDNs 에러 : Uncaught Reference Error: $ is not defined (0) | 2019.10.10 |
Tomcat 서버 실행이 안될때 - 2. Console 확인하기 (0) | 2019.09.25 |
Tomcat 서버 실행이 안될때 - 1. BuildPath 확인하기 (0) | 2019.09.25 |