使用Spring2.5 + Hibernate3 进行改造项目的时候出现的问题,已经很长时间了都没有解决,希望大家帮忙,告诉问题所在.
问题是这样的:
1.我希望使用spring的MVC,不想像spring+struts那样有纵多的XML配置文件,开发起来配这配那很是繁琐.
2.以前用struts开发的,将Action改造成Controller,使用 @Controller 标注
3.Service层使用了@Service 标注, @Trasnactional标注
4.DAO层,由于使用泛型,从Controller到Service到DAO都使用泛型,DAO层被简化,只有一个基类DAO,Hibernate 这块 仍然是读取hbm.xml文件
5.事物交给spring 管理
问题是关于 组建扫描 和 事物标注 产生的问题, 在applicationcontext.xml中到底需要不需要扫描? 需要扫描哪些包
在spring-servlet.xml中肯定需要扫描 扫描什么包呢?
我曾今修改了很多方式,在applicationcontext.xml中,我使用<tx:annotation-driven transaction-manager="transactionManager"/> 后,使用 <context:component-scan base-package="com.dk">中间使用表达式过滤了包含controller的包</context:component-scan>
目的就是扫描除了Controller以外的所有标注类,在spring-servlet中仅仅扫描 Controller包,这时候就出现了问题,发现实例化同时拥有@service和Transactional标注的Service,好像有问题,我在这个Service类里的构造函数里打印的hashCode 和 Controller引用了这个类的地方打印hashCode发现并不相同,并且出现了 一对多关系的类不能加载子表数据,因为我在hibernate配置文件lazy=true,但绝对不是因为没opensessioninview,而是service的实例问题.
还有就是 我在applicationcontext.xml 把扫描去掉,再 spring-servlet中,扫描所有标注,这个时候就不会出现不能加载子表数据问题,而是事物没有起作用.
麻烦大家伙看看
applicationcontext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
default-autowire="byName" default-lazy-init="true">
<!-- 读配置文件 -->
<context:property-placeholder location="classpath:jdbc/mysql.properties"/>
<!-- 数据源配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- Session工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 指定映射文件夹位置 -->
<property name="mappingDirectoryLocations" value="classpath:mapping"/>
<!-- 指定hibernate参数 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
</bean>
<!-- Spring事务 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
default-autowire="byName" default-lazy-init="true">
<!-- 注解扫描范围 -->
<context:component-scan base-package="com.dk"/>
<!-- 启用注解映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
帮帮忙看看,或者有相同项目经历的,小弟谢谢大哥们.
分享到:
相关推荐
spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...
总结来说,这个demo项目提供了一个学习和实践Struts1.2、Spring2.5和Hibernate3.2集成的平台,涵盖了MVC设计模式、依赖注入、面向切面编程和对象关系映射等多个关键概念。通过深入研究和修改这个项目,开发者能够...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...
spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip02
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 03”中,我们将深入探讨Java企业级开发中的三大核心框架——Spring、Spring MVC和Hibernate的整合应用,尤其是利用注解进行的无XML配置。以下是这些...
01. 采用后台及前台的 Spring + Spring mvc + Hibernate + Bootstrap 02. 后台全注解式的开发(除了必要的spring和hibernate的xml配置以外) 03. 后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04...
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip01
在IT行业中,构建大型、模块化的Java应用时,通常会采用一些成熟的框架组合,例如Spring、Spring MVC和Hibernate。这些框架协同工作,可以提供强大的后端功能,包括依赖注入、模型-视图-控制器(MVC)架构以及对象...
【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 08" 提供了一个关于使用Java技术栈进行Web开发的课程,重点在于如何通过注解实现Spring MVC、Spring和Hibernate的深度整合。这个系列教程的第八...
标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...
spring mvc + spring + hibernate 全注解整合开发视频教程 14.haozip02
7. **JPA和Hibernate注解**:在实体类中,你可能会看到如`@Entity`、`@Table`、`@Id`、`@GeneratedValue`等注解,它们是Java Persistence API(JPA)的一部分,用于告诉Hibernate如何映射类到数据库表。 8. **配置...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 05”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring MVC、Spring和Hibernate的集成应用,特别是如何利用注解进行高效无XML配置的开发...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第十部分将聚焦于实际应用中的细节和优化,旨在帮助开发者构建高效、可维护的Java Web应用程序...
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring、Spring MVC和Hibernate是Java领域中广泛使用的三大框架,它们各自负责不同的职责,共同构建了一个强大的开发环境。本篇文章将深入探讨如何利用这三大...
spring mvc + spring + hibernate 全注解整合开发视频教程 14.haozip01
【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 09" 提供了一次深入了解Java企业级应用开发的机会,特别是在使用Spring MVC、Spring和Hibernate这三大核心框架进行全注解配置的场景下。...