`

springmvc+spring4+hibernate的删除和更新方法无效,已经解决

 
阅读更多
没有报任何的错误, 在执行删除或者更新后手动添加getSession().flush()方法,可是单元测试就可以执行,所以估计应该是事务问题;

方法是把事务的配置,从applicationContext移到springmvc.xml文件中去
<!-- 配置事务管理 -->
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>

或者
 

@SuppressWarnings("unchecked")
@Repository
@Transactional
@EnableTransactionManagement
public abstract class DaoSupportImpl<T> implements DaoSupport<T> {

最终解决方案:srpingmvc.xml的扫描配置,只扫描controller包的类,不扫描其他的
正确: <context:component-scan base-package="com.myshopping.controller"></context:component-scan>
错误: <context:component-scan base-package="com.myshopping"></context:component-scan>,会覆盖掉spring.xml容器已经装配好的类。



struts2+spring4+hibernate4的组合方式不存在这样的问题,所以推论是springmvc的原因。
想到servlet的组件初始化顺序:listener->filter->servlet,因为spring容器的初始化,使用的是listener方式,里面配了自动扫描:
<context:component-scan base-package="com.myshopping"></context:component-scan>,该注释扫描了全部的类,标有@Transactional的services类被自动加入事务代理,事务管理器在appliactionContext.xml文件中有配置,所以会自动使用;

springmvc.xml是以servlet的方式初始化容器的,里面又扫描了一次:
<context:component-scan base-package="com.myshopping"></context:component-scan>,也会扫描到已经带有事务管理的services的类,重新自动装配一次,因为springmvc.xml文件中没有配置事务管理器(怪不得把事务管理器配置到springmvc.xml文件中有用),所以services的类不再有事务管理,所以解决办法是把springmvc.xml文件的注解扫描配置成只扫描controller包就可以了,这样就不会覆盖到已经有事务管理的类。
分享到:
评论

相关推荐

    springmvc+spring4+hibernate5

    Spring MVC、Spring 4 和 Hibernate 5 是三个在Java Web开发中非常重要的开源框架,它们分别负责不同的职责:Spring MVC 用于构建Web应用程序的模型-视图-控制器(MVC)架构,Spring 4 提供了全面的服务层支持,包括...

    springmvc+hibernate完整项目

    SpringMVC和Hibernate是Java开发中的两个重要框架,SpringMVC负责处理Web应用的请求-响应,而Hibernate则是一个强大的对象关系映射(ORM)工具,用于简化数据库操作。这个"springmvc+hibernate完整项目"是一个整合了...

    spring springmvc hibernate mySql图书管理系统完整项目+book.sql

    本项目“spring springmvc hibernate mySql图书管理系统完整项目+book.sql”全面展示了SSH框架与MySQL数据库的集成运用,提供了完整的权限管理模块,并实现了诸如Ajax异步刷新、文件上传、访问拦截及数据校验等多种...

    SpringMVC3.0+Hibernate3.0+jQuery+Mysql实现登录注册(完整版)

    在本项目中,我们主要探讨的是如何利用SpringMVC 3.0、Hibernate 3.0、jQuery和MySQL来构建一个完整的登录注册系统。这个系统不仅涵盖了后台的业务逻辑处理,还包括了前端的用户交互与数据验证。下面将分别详细介绍...

    Maven+Spring MVC +Hibernate Validate(服务端验证)

    标题 "Maven+Spring MVC +Hibernate Validate(服务端验证)" 描述的是一个使用现代Java Web开发技术栈构建的应用示例,其中包括三个核心组件:Maven、Spring MVC和Hibernate Validate。这个项目展示了如何整合这些...

    Spring MVC+hibernate helloworld

    Spring MVC和Hibernate是Java开发中常用的两个开源框架,它们分别负责Web层和持久化层的管理。本实例是一个基础的“Hello, World!”程序,旨在帮助初学者理解这两个框架的集成与基本用法,并引入了简单的验证功能。...

    基于Spring+Mybatis+Springmvc实现的CRM客户管理系统源代码

    本项目采用Spring、Mybatis和SpringMVC三大主流技术框架进行构建,实现了功能全面、灵活可扩展的CRM系统。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP)框架,为项目提供了良好的结构化和模块化设计...

    springmvc数据验证jar包

    在Java Web开发中,Spring MVC框架提供了一种优雅的方式来处理控制器方法中的数据验证。这个"springmvc数据验证jar包"正是为了实现这一功能而必备的组件。它包含了多个关键库,如Hibernate Validator、JBoss Logging...

    javapms门户管理系统 v1.4 beta

    以SpringMVC+Spring+Hibernate+Freemarker+Html5+jQuery为技术核心架构,面向广大站长、软件开发者、程序爱好者、网页设计师,适用于个人站长、商业企业、政府机构、教育机构和其它各种单位组织的信息门户网站建设,...

    Java在线考试系统 SpringMVC实现.zip

    Java在线考试系统是基于SpringMVC框架实现的一个项目,它集成了Spring的多个核心特性,如...通过学习和分析这个项目,开发者可以深入理解SpringMVC、Spring IoC和Hibernate的集成应用,以及前端验证的实践方式。

    SpringMVC入门很简单之数据验证

    SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。它是基于Model-View-Controller(MVC)设计模式的,可以帮助开发者构建松耦合、可测试且易于维护的Web应用。在这个"SpringMVC入门很简单之...

    SpingMVC Hibernate验证jar包

    SpringMVC和Hibernate是Java开发领域中非常重要的两个框架,它们分别用于构建Web应用程序的模型-视图-控制器(MVC)架构和持久层管理。在这个"SpingMVC Hibernate验证jar包"中,我们主要关注的是如何整合这两个框架...

    SpringMVC登录实例

    SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求-响应模型。它是一个轻量级的、基于注解的模型-视图-控制器(MVC)架构,为开发人员提供了一种优雅的方式来组织和构建Web应用。在这个“SpringMVC登录...

    SpringMVC使用Validation验证表单

    在Spring MVC框架中,表单验证是一个至关重要的环节,它确保了从客户端提交的数据符合预设的业务规则,从而防止因无效数据导致的错误或安全问题。Validation是Java世界中用于对象验证的标准API,通常与Hibernate ...

    SpringMVC数据验证——注册用户格式的验证实例

    首先,我们需要理解Spring MVC的数据验证是基于JavaBeans规范中的Java Bean Validation(JSR 303/349)标准和Hibernate Validation实现的。这允许我们在模型类(通常是用户实体类)中添加注解,来定义验证规则。 ...

    SpringMVC杂记(五) JSR303数据验证

    在SpringMVC中,我们可以利用`@Valid`注解在控制器方法的参数上,告诉SpringMVC对传入的对象进行验证。当请求被处理时,Spring会调用JSR303提供的验证器,检查对象的属性是否满足预设的约束。如果验证失败,Spring会...

    spring3.0MVC中文教程.doc

    Spring3.0 MVC教程通常分为多个部分,包括对框架基础的介绍、创建基本的"Hello World"应用、表单处理、Tiles支持、国际化和本地化、主题设置,以及整合Hibernate进行数据库操作等。这些教程旨在帮助开发者逐步掌握...

    springMVC入门教程

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring ...对于初学者而言,理解其基本架构、组件交互和常见问题的解决方法是学习的关键。通过实践项目,你可以更好地掌握这些知识,并逐步提升自己的技能。

    springmvc 使用validation使用的jar包!

    在Spring MVC框架中,数据验证是一个非常重要的功能,它确保了输入的数据符合预期的格式和规则,从而提高应用的稳定性和安全性。在这个场景中,我们关注的两个关键jar包是`hibernate-validator-5.2.2.Final.jar`和`...

    springmvc-val.rar

    Spring MVC集成了一些常见的数据校验库,如Hibernate Validator,这使得我们可以方便地对控制器方法中的参数进行验证。基本校验主要涉及以下注解: 1. `@NotNull`:检查对象是否为null。 2. `@NotEmpty`:检查字符...

Global site tag (gtag.js) - Google Analytics