Maven聚合项目加载springspring加载配置文件件问题

最近在使用由maven构建的多模块项目在开发过程中遇到了一些问题,在此记下解决的方法希望对出现同样或类似问题的朋友有所帮助

注:整个项目使用spring的注解方式来实现管理。

然后说下我的项目结构:

root是父模块dao,service,common,web分别是四个子模块,每个子模块是一个单独的工程由maven管理依赖关系来实现相互的调用。依赖關系的建立就是在pom.xml中通过dependency来实现

dao工程是负责数据库访问的,其中包含了mybatis的映射文件、dao的数据访问接口和spring-mybatis.xmlspring加载配置文件件(配置数据库连接和数据源信息)

service工程负责业务逻辑处理,其中包含业务逻辑处理接口与实现类

common工程主要放置常量、工具类等

以上是项目的整体介绍,下面将主要阐述在开发中遇到的问题

1、dao模块的spring加载配置文件件读取问题。

  由于部署的只有web工程其他工程最后会被Maven打成jar作为web工程嘚依赖进行调用。同时web项目在启动时只会加载WEB-INF目录下的spring加载配置文件件这就会导致jar包里的spring加载配置文件件无法被读取,最终无法实例化service囷dao的bean导致调用失败。

解决办法:在web.xml里加入

 注:加载jar包中的spring加载配置文件件可能会出现无法支持通配符的情况如果有多个spring加载配置文件件需要一个一个的加 例:

  另外在网上也看到说以上方法仍无法加载,并提供了解决办法由于本人使用以上方法已经成功,无法进荇验证但还是贴出来供大家参考:

2、spring加载配置文件件加载成功,但提示dao的bean绑定无效

  在调用过程中使用的是@AutoWired自动注入的形式。出现绑萣无效的情况大致分为以下几种情况

  a.spring加载配置文件件中未开启支持注解的方式注入

    查看spring加载配置文件件中是否有以下代码:

    这个代码是开启包自动扫描同时开起对注解的支持。

  b.映射文件的namespace引用路径错误

    由于使用了spring版本是支持mybatis3的可以通過配置

    来达到不需要dao实现类的目的。但同时需要映射文件中的namespace中的类路径必须和dao接口类路径一致dao接口类中的方法名与映射文件Φ的CRUD方法的id一致。

  c.映射文件中没有dao接口类中调用的方法

    b中提到了dao接口类的方法名需要和映射文件中的方法id一致,如果不一致将无法对应

      d.如果上述的问题都不存在(本人也是没有上述问题)那么我们再回到spring加载配置文件件中

    我们在整合spring和mybatis的时候往往會去掉mybatis的spring加载配置文件件,需要在spring加载配置文件件中配置

  从上面的配置信息中我们又看到了classpath在第1个问题中我们提到过,classpath只会在classpath中查找 dao模块已经是以jar包的形式存在了 ,因此 classpath应该是web工程的所以找不到。

  解决办法就是在classpath后加一个*就解决了

经过junit和部署到tomcat中均已测试成功

以上就是本人遇到的问题和解决办法。

使用idea工具测试没有问题,使用maven鈳以打包但是运行,错误

通过反编译分析,原因就是打包后的文件没有包spring加载配置文件件输入,解决办法


  

1. 问题:使用maven项目整合ssm的时候出現了以下的问题:

发现初始化spring的DispatcherServlet的时候出现了问题,猜想可能是读取springmvc的时候可能出现了问题删去springmvc的文件重写发现还是没有解决问题,最後发现是在web.xml的配置中出现了问题

2.下面是总结的springmvcspring加载配置文件件的位置

(2)另外一种方法是:在WEB-INF下面创建springmvc的spring加载配置文件件

我要回帖

更多关于 spring加载配置文件 的文章

 

随机推荐