Ich habe Dateistruktur wie folgt konfiguriert werden:Samen application Arbeit mit Web-Anwendung, aber nicht mit Frühlings-Test (spock) arbeitet, verschachtelter Mybatis-config.xml nicht geöffnet werden kann
Project/
war/
WEB-INF/
applicationContext.xml
mybatis-config.xml
(both two xml files are under same directory:WEB-INF)
Mybatis config in application. xml wie folgt aus:
<!-- SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.domain.model" />
<property name="configLocation" value="WEB-INF/mybatis-config.xml" />
</bean>
Above Konfiguration funktioniert in Web-Anwendung, und ich habe eine spock Unit-Test wie folgt aus:
@ContextConfiguration(locations = "file:war/WEB-INF/applicationContext.xml")
public class SeniorPerWorkerMsgPusherTest extends Specification {
@Autowired
MyBatisMapper mapper
.....
}
Wenn es läuft, bekamen Schlag Fehler ausgedruckt:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in URL [file:war/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/mybatis-config.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
... 124 more
Caused by: java.io.FileNotFoundException: class path resource [WEB-INF/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:407)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:381)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 131 more
Frage ist: Warum mit Web-Anwendung nicht gleiche Arbeit application aber nicht mit Frühlings-Test (spock) arbeiten?
Was passiert, wenn Sie Ihre Testklasse mit '@WebAppConfiguration („Krieg“)' annotieren passiert? –