集成Spring 2.5并整合JPA常见错误
1. Spring集成jpa和集成tomcat数据连接池的配置文件的问题:
Spring的配置文件beans.xml(部分)内容如下:
出现的异常如下:
PS:若需要参考更详细信息,见:http://www.iteye.com/problems/15300
查询后找到如下解决方法:
这里设置了transactionManager,先加载上面已经设置好的<bean id="datasource">...
如果再加载datasource就会报错,不妨把transactionManager这个层去掉,也不会有影响。可以按照此方法解决,但是出现这种问题,也可能是Hibernate和Spring版本依赖问题,请按下面方法解决。
集成时,若出现以下异常:
Causedby:
java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
查询后知:spring2.5 不支持jpa2.0 ,而hibernate 3.5.0是jpa2.0的超集,所以要使用hibernate3.5.0必须使用spring3.0,否则会报出以上异常。所以,重新导入合适版本的依赖包即可解决。
PS:参考网络,详见:http://jw2007.iteye.com/blog/627582
3. 数据源配置重复问题解决依赖问题后,若抛出异常:
java.lang.UnsupportedOperationException: Notsupported by BasicDataSource
这时,请将集成JPA时的persistence.xml中关于数据源的配置注释掉或者删除,示例如下:
4.利用spring的@Service注解配置时,提示找不到bean在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了 @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。
在 spring的配置文件里面只需要加上<context:annotation-config/> 和<context:component-scan base-package="需要实现注入的类所在包"/>,可以使用base-package="*"表示全部的类。就可以使用以上注解来提高开发效率。
但是这里一定要注意:
这里千万不要写错,今天把包的名称修正了一下,但是这里的配置没有修改,死活找不到bean,忙活了大半天,原来是这里出了错误,以后应该多多细心啊,不然累死你!!