使用SpringBoot devtools热部署功能,Mybatis出现无法找到映射文件的错误提示,导致无法启动web服务器
错误提示:
Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [mapper/]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1363) ~[tomcat-embed-core-9.0.14.jar:9.0.14]
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1023) ~[tomcat-embed-core-9.0.14.jar:9.0.14]
at org.springframework.core.io.ClassPathResource.resolveURL(ClassPathResource.java:155) ~[spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:193) ~[spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:497) ~[spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:298) ~[spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
at org.mybatis.spring.boot.autoconfigure.MybatisProperties.getResources(MybatisProperties.java:191) ~[mybatis-spring-boot-autoconfigure-2.0.0.jar:2.0.0]
at org.mybatis.spring.boot.autoconfigure.MybatisProperties.lambda$resolveMapperLocations$0(MybatisProperties.java:185) ~[mybatis-spring-boot-autoconfigure-2.0.0.jar:2.0.0]
问题原因:
关键字不能加载[mapper/]。
springBoot 使用了spring-boot-devtools,热部署后加载mybatis映射文件找不到对应目录造成的
只需要设application.properties
mybatis.mapperLocations=classpath*:mapper/*.xml
使用classpath*:替换之前的classpath:来告诉spring查找所有classpath
mybatis:
type-aliases-package: com.company.bean
mapper-locations: classpath*:mapper/*.xml
configuration:
cache-enabled: true