反射机制调用的方法如何配置spring事务?

yangyun_ncs 2012-05-28 11:36:58
接到一个项目,最老的版本 就用了一个ibatis 框架,连spring都没有用,
而且也没有command service 和dao 分层,
后来我们加了spring框架后,事务老是配置不成功。

项目没有用 struts ,就一个default servlet来控制所有非下载的请求,
拿到command类的id,和方法名, 然后利用反射机制,invoke方法调用,
原本的事务都是自己写的,后来加了spring后 用过2中配置事务方式,aop和注解,
都没有办法在command层配置事务,配在service层事务是有效果的,就是在command层不起作用,
研究半天,发现可能是因为command层是用反射机制调用造成的。

因为我们是在原有的项目中修改和加东西,所以要加struts不太可能,要改的东西太多太多,所以目前事务一直有问题。

求高手帮忙,分析下,有没有方法在command层配置事务
...全文
592 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanyuanwaifdl 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

使用Spring的事务模版吧, 可以解决你的问题.在需要用到的地方:
类似这样
pamirsTransactionTemplate.execute(new PamirsTransactionAction() {
@Override
public Object doInTransaction(PamirsTransactionStatus s……
[/Quote]饿
yangyun_ncs 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
小弟才疏学浅 对你描述的东西 不甚理解啊

command层是什么? 对应MVC 中的C 吗?

如果是 控制层的话 为什么要在这一层加事物

一个单元控制要对应多少的原子逻辑 事物要加在需要的原子逻辑上

对于 dao--->service--->control 事物加在service上是正确的 一个事物内的所有操作都要在service中完成 退出service方法就等于退出了事……
[/Quote]
恩,你说的没错,应该是这样的,但是这个项目原来没有分层,只有1层,业务逻辑全在里面,
spring是后加的,我们是希望不动原来代码的情况下,用spring事务。

还有,现在好多人习惯,都是直接把业务逻辑写在command层,然后service层是直接调用dao的,至少我原来的软件公司的项目基本都这样,但是用的struts,所以spring事务可以用。
ChengLyn 2012-05-29
  • 打赏
  • 举报
回复
使用Spring的事务模版吧, 可以解决你的问题.在需要用到的地方:
类似这样
pamirsTransactionTemplate.execute(new PamirsTransactionAction() {
@Override
public Object doInTransaction(PamirsTransactionStatus status) throws Exception { //需要放在事务控制里的代码}
}
事务模板的名字不一定是我这个,我这个是自定义的。
sjlzcj 2012-05-29
  • 打赏
  • 举报
回复
小弟才疏学浅 对你描述的东西 不甚理解啊

command层是什么? 对应MVC 中的C 吗?

如果是 控制层的话 为什么要在这一层加事物

一个单元控制要对应多少的原子逻辑 事物要加在需要的原子逻辑上

对于 dao--->service--->control 事物加在service上是正确的 一个事物内的所有操作都要在service中完成 退出service方法就等于退出了事物
yangyun_ncs 2012-05-29
  • 打赏
  • 举报
回复
自己顶起来~
yangyun_ncs 2012-05-28
  • 打赏
  • 举报
回复
木油人知道吗?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧