STS3与IDEA文件路径解析问题复盘

问题出现
搭建spring mvc boot程序,并整合mybatis。已经成功运行于Spring开发套件STS3中,移植到IDEA中出现没有sqlSessionFactory,因此也就创建不了服务层数据Bean。
解决思路

  • 对比源程序文件和引用的jar包,确认无误
  • 修改application.yml文件中的端口,查看调试代码中端口号是否被修改,查看该文件是否被正确加载
  • 如果正确加载后,仍旧不能读取数据库数据,接着继续查找mybatis配置属性块,查看检索的bean包对不对,以及mapper.xml文件路径对不对
  • 本文中遇到的问题就出现在mapper.xml文件路径上
  • 在STS3中,路径是classpath:/resources/mapping/*Mapper.xml,将文件放到IDEA中始终创建数据库Bean出现问题,于是在这个路径基础上各种换,把路径写全,相对路径等操作,还是不行
  • 最后通过IEDA的copy path功能,提取到绝对路径值,代入其中,可以正常初始化了,但是还是出现数据访问问题,说明问题还是出现在路径上,因为在STS3中运行正确
  • 明确了路径问题,接着写相对路径,其值是classpath:\resources\mapping\*Mapper.xml,终于可以正确访问了

为什么一开始没想到
因为windows和linux路径访问是区别的,一个是/,一个是\,没有想到同一个操作系统中会出现这种问题,只考虑绝对和相对路径来回更改
问题深入理解
因为在图形框架中加载图片时也遇到过路径问题,因此总结一下路径问题出现有三种方式

  • 操作系统不同
  • 直接是文件中赋值,不是字符串形式
  • 代码中以字符串形式

对于第一种和第三种很好解决,特别地,第二种问题出现方式,因为解析配置文件是直接将路径值代入到代码中,根路径中已经出现了操作系统特有的路径分隔符,配置文件中的值补全到其中,如果不同,就会出现这种形式的路径D:\myproject\src\main/resources/mapping/UserMapper.xml,因此无法访问。

你可能感兴趣的:(笔记)