文档章节

spring mvc 给action添加事务

s
 spiders
发布于 2014/08/21 15:37
字数 762
阅读 41
收藏 0

自己单独做了个小网站 但是发现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了

<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(vopobo)和jsp页面。写一个小功能 7、8个类就写出来了。 开发者说我就是想接点私活儿,和PHP,ASP抢抢饭碗,但我又是Java程序员。最好的结果是大项目能做好,小项目能做快。所以“激进型”方案就出现了—–没有接口、没有Service层、还可以没有众多的O(vopobo)。那没有Service层事务控制在哪一层?只好上升的Action层。

 

本文不想说这是不是正确的思想,我想说的是Spring不会限制你这样做。

 

 

 

 

 

 

Java–大项目能做好–按传统方式做,规规矩矩的做,好扩展,好维护。

Java–小项目能做快–按激进方式做,一周时间就可以出一个版本,先上线接受市场(用户)的反馈,再改进,再反馈,时间就是生命(成本)。


本文转载自:http://ee.riaos.com/?p=20000936

s
粉丝 2
博文 56
码字总数 14428
作品 0
北京
后端工程师
私信 提问
使用springMVC的详细步骤

使用springMVC的详细步骤   使用springMVC也可以代替struts2,当然只是代替业务分发的功能,struts2的一些其他功能它是没有的,不然要struts2有什么用。   下面我用springMVC代替struts2...

风中帆
2015/07/11
620
3
Spring 事务学习

先看项目的三个配置文件 spring.xml spring-mybatis.xml spring-mvc.xml 普通的事务直接直接在spring-mybatis.xml中配置声明式事务即可,或在service/dao层直接用注解事务@Transactional,本...

qiun
2016/09/01
87
0
Spring、Spring MVC、Struts2、、优缺点整理

Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架。 说它轻量级有一大部分...

架构师springboot
03/21
25
0
Hasor-0.0.9,包含(Core/Web/MVC/DB/Test) 发布

项目首页:http://www.oschina.net/p/hasor 项目地址:http://git.oschina.net/zycgit/hasor/tree/Release.Hasor-0.0.9/ Hasor-0.0.9中包含了如下部分: Hasor-Core v0.0.9 Hasor-Web v0.0.7......

哈库纳
2014/09/21
1K
4
struts + Hibernate + Spring WEB框架

struts:负责显示层,是一个完美的MVC实现,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。 Hibernate:创建一系列的持久化类,将每个类的属性与数据库表的属性一一对应。...

rob_rookie
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
17分钟前
2
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
28分钟前
2
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
29分钟前
2
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
35分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
35分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部