configLocation value 설정시 value="/WEB-INF/mybatis/mybatis-config.xml" 이렇게 지정하면 JUnit 상에서 에러가 발생합니다. tomcat에서는 에러가 발생하지 않구요 예제상의 classpath로 지정할경우 에러는 발생하지 않습니다.
에러: Caused by: java.io.FileNotFoundException: class path resource [WEB-INF/mybatis/mybatis-config.xml] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:358) at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) ... 78 more
답글삭제configLocation value 설정시 value="/WEB-INF/mybatis/mybatis-config.xml"
이렇게 지정하면 JUnit 상에서 에러가 발생합니다.
tomcat에서는 에러가 발생하지 않구요
예제상의 classpath로 지정할경우 에러는 발생하지 않습니다.
에러:
Caused by: java.io.FileNotFoundException: class path resource [WEB-INF/mybatis/mybatis-config.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:358)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
... 78 more
이유가 궁금합니다. 답변 부탁드립니다.
작성자가 댓글을 삭제했습니다.
답글삭제에러의 발생 원인은 STS상의 경로를 인식하기 위해서는 실제 폴더의 경로가 입력되어야 하기 때문입니다.
답글삭제STS상에서는 프로젝트 밑에 /WEB-INF 라는 경로가 바로 보이지만 실제로 동작하는데 있어서는 deploy된 후에 경로를 사용하기 때문에 말씀하신대로 해당 경로를 제대로 인식하지 못하게 됩니다.
설정시에 'classpath:...'를 붙여주는 이유가 바로 이러한 경로의 차이를 지정할 때 편리하게 사용하기 위함입니다.
에러의 발생 원인은 STS상의 경로를 인식하기 위해서는 실제 폴더의 경로가 입력되어야 하기 때문입니다.
답글삭제STS상에서는 프로젝트 밑에 /WEB-INF 라는 경로가 바로 보이지만 실제로 동작하는데 있어서는 deploy된 후에 경로를 사용하기 때문에 말씀하신대로 해당 경로를 제대로 인식하지 못하게 됩니다.
설정시에 'classpath:...'를 붙여주는 이유가 바로 이러한 경로의 차이를 지정할 때 편리하게 사용하기 위함입니다.