MAVEN搭建SPRINGMVC+HIBERNATE遇到的问题及解决方案

来源:互联网 发布:java 图片合成pdf 编辑:程序博客网 时间:2024/05/22 11:50

    搭建环境时遇到了很多问题,不过大部分是版本冲突之类的问题,还有就是这个项目是在别的项目的基础上改的,当时那个项目用的SPRING版本与我现在

这个不一致,导致后面很多由配置文件引发的问题,所以,搭环境的时候最好从头开始,或者用MAVEN引入JAR包时注意与基础版本一致,这样会减少很多

头疼的问题。下面记录下我遇到的一些问题。

   1.cvc-elt.1: Cannot find the declaration of element 'beans

      网上导致这个问题的原因很多,我的这个是因为applicationcontext.xml及spring-servlet.xml里的schema中的版本号写错了导致的,我直接

从其它项目拷过来的,用的版本是3.0,MAVEN里引入的是2.5.6,这个还导致了好多问题,比如开始的时候写的测试类是正常工作的,项目布置到TOMCAT上之后,

再运行测试类就报java.io.FileNotFoundException: applicationContext.xml (系统找不到指定的文件),而且部署到TOMCAT上,classes路径里也没有这个文件

网上找了好久也没有解决,后来自己又好了,我怀疑有可能也是这个原因导致的。在这里还是提醒大家,schema文件配置最好下载官方对应的SPRING文档,然后

在里面的SAMPLES里拷贝过了,不要图省事,最后反而浪费时间。


    2.Unable to locate Spring NamespaceHandler for XML schema namespace xxxx,这个是因为少引了JAR包,

错误与JAR包关系,这里说的很清楚,少了什么JAR,会报少什么namespce xxxx。


    3.java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config

    这个是项目启动成功后访问JSP页面时报的,但是JSP本身并没有使用JSTL,网上查了,说是SPRINGMVC映射时使用了,不太确定,有知道的同学麻烦告知下。

我这里只需要在POM里添加这个引入就可以了

    <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>jstl</artifactId>  
            <version>1.2</version>  
            <scope>runtime</scope>  
    </dependency>


    4.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxxxxxx': Injection of resource methods failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'xxxxxxxxxxx' is defined,这个问题如果拿到网上绝对一堆大神跳出来说BEAN没

定义、名字写错了啥的,不过不是这个问题。。。这是我犯的一个低级错误。因为我这个项目的数据比较多,这里采用了分库的办法。所以,在配置HIBERNATE的

SESSIONFACTORY的时候是每一个数据库配置了一个,写在了不同的APPLICATIONCONTEXT.XML里,DAO层通过注解把SESSIONFACTORY注入进去,在其中一个

applicationContext.xml中,我一次扫描了所有的组件<context:component-scan base-package="com.xxx.xxx" />,所以在spring加载这个applicationContext.xml的时候

一次加载了所有的BEAN,但是有些DAO对应的SESSIONFACTORY的申请是在另一个文件比如applicationContextB.xml中,所以在组装这个DAO的时候就会报这个错。

解决方法是每个applicationContext.xml只扫描它对应模块的组件,如果<context:component-scan base-package="com.xxx.xxx.role" />,<context:component-scan base-package="com.xxx.xxx.user" />,问题解决


    还有很多其它乱七八糟的问题,不过都是小问题,很快就解决了,记不太清了。


0 0