zoukankan      html  css  js  c++  java
  • spring mvc 给action添加事务不成功的原因

    spring springMVC ation事务管理
    自己单独做了个小网站 但是发现action事务不起作用了 但是如果用service层就没问题 找了很多办法没解决 最后自己解决了
    其实就是一个加载顺序的问题
    首先使用了spring MVC的项目是不需要配置action bean  而是通过spring mvc的配置文件进行扫描注解加载的
    spring事务配置文件还有上下文都是通过org.springframework.web.context.ContextLoaderListener加载的,
    而spring MVC的action是通过org.springframework.web.servlet.DispatcherServlet加载的
    这样就有个优先级的问题了  web是先启动ContextLoaderListener后启动DispatcherServlet
    在ContextLoaderListener加载的时候action并没在容器中,所以现在使用AOP添加事务或者扫描注解都是无用的。
    那么解决办法就是在DispatcherServlet 加载spring-MVC配置文件后再进行一次AOP事务扫描和注解事务扫描就OK了

    Xml代码  收藏代码
    <tx:annotation-driven transaction-manager="transactionManager"/> 
    <aop:config>   
            <aop:advisor advice-ref="transactionAdvice" pointcut="execution(* com.yang.web.*.action.*.*(..))"/>   
    </aop:config> 


    至于为什么要在Action中加事务

    spring in action 一书中也说过 service dao action 是很经典的组合但不是必须的,对于一个简单的增删改查系统,没必要分那么多层,比如一个简单保存功能 无非就new 一个实体 映射参数 使用了spring jdbcTemplate 保存就一行代码 就一个这么简单的功能有必要 一个service接口 一个service实现类 一行代码调用一个dao接口一个dao实现类  要多建四个类 还要在spring上下文中配置  不累吗?  对于一个简单的系统而言这就是为自己找不自在  明明盖的是民房 硬要打摩天大楼的地基

    另有一篇博客也是这样说的

    http://elf8848.iteye.com/blog/875830

    五、父子上下文(WebApplicationContext) 方法二激进型

    方案二,激进型:

    Java世界的“面向接口编程”的思想是正确的,但在增删改查为主业务的系统里,Dao层接口,Dao层实现类,Service层接口,Service层实现类,Action父类,Action。再加上众多的O(vopoo)和jsp页面。写一个小功能 7、8个类就写出来了。 开发者说我就是想接点私活儿,和PHP,ASP抢抢饭碗,但我又是Java程序员。最好的结果是大项目能做好,小项目能做快。所以“激进型”方案就出现了-----没有接口、没有Service层、还可以没有众多的O(vopoo)。那没有Service层事务控制在哪一层?只好上升的Action层。

    本文不想说这是不是正确的思想,我想说的是Spring不会限制你这样做。
  • 相关阅读:
    Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
    聊聊程序员如何学习英语单词:写了一个记单词的小程序
    ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
    关于开启.NET在线提升教育培训的通知!
    彻查手机端浏览博客园出现广告一事!
    ASP.NET Aries 入门开发教程9:业务表单的开发
    ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
    ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
    ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
    ASP.NET Aries 入门开发教程5:自定义列表页工具栏区
  • 原文地址:https://www.cnblogs.com/iamconan/p/7383459.html
Copyright © 2011-2022 走看看