2015년 8월 9일 일요일

스프링 + MyBatis + MySQL 설정하고 테스트하기





















댓글 4개:









  1. 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

    이유가 궁금합니다. 답변 부탁드립니다.


    답글삭제
  2. 작성자가 댓글을 삭제했습니다.

    답글삭제
  3. 에러의 발생 원인은 STS상의 경로를 인식하기 위해서는 실제 폴더의 경로가 입력되어야 하기 때문입니다.

    STS상에서는 프로젝트 밑에 /WEB-INF 라는 경로가 바로 보이지만 실제로 동작하는데 있어서는 deploy된 후에 경로를 사용하기 때문에 말씀하신대로 해당 경로를 제대로 인식하지 못하게 됩니다.

    설정시에 'classpath:...'를 붙여주는 이유가 바로 이러한 경로의 차이를 지정할 때 편리하게 사용하기 위함입니다.

    답글삭제
  4. 에러의 발생 원인은 STS상의 경로를 인식하기 위해서는 실제 폴더의 경로가 입력되어야 하기 때문입니다.

    STS상에서는 프로젝트 밑에 /WEB-INF 라는 경로가 바로 보이지만 실제로 동작하는데 있어서는 deploy된 후에 경로를 사용하기 때문에 말씀하신대로 해당 경로를 제대로 인식하지 못하게 됩니다.

    설정시에 'classpath:...'를 붙여주는 이유가 바로 이러한 경로의 차이를 지정할 때 편리하게 사용하기 위함입니다.

    답글삭제