SSM框架mapper文件夹由resource目录转入java目录后服务器上访问不到404

来源:互联网 发布:word数据转换成excel 编辑:程序博客网 时间:2024/05/19 18:38

1、遇到的问题

    在搭建SSM框架的时候,由于是模仿别人的框架搭建,所以讲mapper文件夹放在了resource的目录下。然后spring-mybatis的配置为:
<!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <!-- 自动扫描mapping.xml文件 -->        <property name="mapperLocations" value="classpath:mapping/*.xml"></property>        <!-- 文件映射器,指定类文件 -->        <property name="configLocation" value="classpath:mybatis-config.xml"/>       </property>    </bean>

这时在本地环境以及服务器环境上使用都没有任何问题。但是在编程过程中会出现一个比较麻烦的问题,就是要在java目录下与resource目录下来回切换。于是想到了将mapper文件夹直接剪切到java目录下。结果很不好意思,报错了。

2、出错原因

诱发这种错误的原因有几方面
(1)一般情况下。maven打包的时候对于 src/main/java 目录下的文件只打包源代码,不会打包其他的文件。所以我们的mapper.xml文件不会被打包,即使你已经转移到java目录下了。此类配置参见pom.xml文件的build标签配置,如果你的项目里build下没有resource的配置,那么证明你的项目采用的是默认配置。
(2)在我们的spring-mybatis.xml配置文件中,关于mapper映射的配置一定要改到你新转移的java目录下。一般来说,直接采用拖拽式转移文件的,系统都会自动帮你改掉此路径,这里没有什么可赘述的。附上两种配置情况。

<!--两种路径配置-->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <!-- 自动扫描resource路径下的mapping.xml文件-->        <property name="mapperLocations" value="classpath:mapping/*.xml"></property>        <!-- 自动扫描java路径下的mapping.xml文件 -->        <property name="mapperLocations" value="classpath:com/familylife/ssm/mapper/*.xml"></property>    </bean>

3、解决办法:

除了上边提到的,把spring-mybatis.xml文件路径改掉之外(其实改到这一步在本地就可以正常运行了,但是服务器上可访问不到,关于这点为什么我也没有深入研究,可能本地的打包方式跟服务器上不一样),我们还要在pom.xml中去配置maven在打包的时候都打包哪些文件。
在pom.xml文件中修改build配置:

<build>    <finalName>FamilyLife</finalName>    <!--使mapper文件夹可以配置在java文件夹下的关键配置。-->    <resources>       <!--扫描打包java目录下的xml文件与class文件-->      <resource>        <directory>src/main/java</directory>        <includes>          <include>**/*.xml</include>          <include>**/*.class</include>        </includes>        <filtering>true</filtering>      </resource>      <!--扫描打包resource目录下的各类文件。(项目中用不到的类型文件可以删掉,这个随情况而定)-->      <resource>        <directory>src/main/resources</directory>        <includes>          <include>**/*.xml</include>          <include>**/*.properties</include>          <include>**/*.bpmn</include>          <include>**/*.conf</include>          <include>**/*.pdf</include>        </includes>      </resource>    </resources>  </build>

到此,“SSM框架mapper文件夹由resource目录转入java目录后服务器上访问不到404“的问题就解决了。如果大家有更深入的研究,可以在评论区评论,共同学习。