文档章节

AOP事务的例子

乒乓狂魔
 乒乓狂魔
发布于 2015/10/10 08:09
字数 171
阅读 650
收藏 3
点赞 1
评论 7

给大家看一个例子,共同来分析下存在的问题

场景:保存用户成功后,发送一个消息。如果没有保存成功,回滚同时不能发送消息

前提:

  • 1 先不考虑发送消息会失败的情况,就是一旦调用发送消息的方法就一定会发送成功。
  • 2 tx:annotation-driven也已正常配置

关注问题: AOP是否成功?事务能否正常回滚?

结果是:

  • UserService没有被代理,如何解决
  • 上述问题解决后,会发现并没有开启事务,如何解决?

输入图片说明

看看上面的伪代码能不能达到目的

© 著作权归作者所有

共有 人打赏支持
乒乓狂魔
粉丝 972
博文 105
码字总数 271356
作品 0
长宁
程序员
加载中

评论(7)

乒乓狂魔
乒乓狂魔

引用来自“iq527”的评论

使用Spring的事务切面时, Service方法中调用内部方法时, 无法实施切面中的增强 0
http://jinnianshilongnian.iteye.com/blog/1487235
是的
iq527
iq527
使用Spring的事务切面时, Service方法中调用内部方法时, 无法实施切面中的增强 0
http://jinnianshilongnian.iteye.com/blog/1487235
_adian
_adian
什么跟什么啊,还aop
泥沙砖瓦浆木匠
泥沙砖瓦浆木匠

引用来自“乒乓狂魔”的评论

引用来自“泥沙砖瓦浆木匠”的评论

0其他没什么 就是 private void saveAndSendMsg

你改成public后,虽然被代理了,但是仍然没有开启事务
乒乓狂魔
乒乓狂魔

引用来自“泥沙砖瓦浆木匠”的评论

0其他没什么 就是 private void saveAndSendMsg

你改成public后,虽然被代理了,但是仍然没有开启事务
乒乓狂魔
乒乓狂魔

引用来自“泥沙砖瓦浆木匠”的评论

0其他没什么 就是 private void saveAndSendMsg

这只是第一个问题
泥沙砖瓦浆木匠
泥沙砖瓦浆木匠
0其他没什么 就是 private void saveAndSendMsg
在同一个类中调用另一个方法没有触发 Spring AOP 的问题

起因 考虑如下一个例子: 在这个例子中, 我们定义了一个注解 , 这个是一个方法注解, 我们的期望是当有此注解的方法被调用时, 需要执行指定的切面逻辑, 即执行 方法. 在 SomeService 类中, 方法...

永顺 ⋅ 2017/02/17 ⋅ 0

spring aop , tx

一 .面向切面编程(AOP)的基础概念: 以一个普通的java方法来举例 a. 横切关注点:如上面5个通知的位置,在java对象中,可以这些具有类似共同处理逻辑的位置加入如权限验证、事物处理、日志记...

SKYCOBS ⋅ 2016/08/18 ⋅ 0

【Spring AOP】学习记录(二)

国庆过得好像有点忙,是不是生活过得简单了,就有时间享福了?当然国庆假期也抽点时间来学习学习,不然赶不上年轻人的脚步 学啥 今天学习了一下aop的事务管理,没分析内部,估计只不过对使用...

小彬彬_ ⋅ 2016/10/04 ⋅ 0

我们为什么要使用 AOP

前言 一年半前写了一篇文章Spring3:AOP,是当时学习如何使用Spring AOP的时候写的,比较基础。这篇文章最后的推荐以及回复认为我写的对大家有帮助的评论有很多,但是现在从我个人的角度来看...

t4i2b10X4c22nF6A ⋅ 2017/10/26 ⋅ 0

Spring源码学习之:spring注解@Transactional

在分析深入分析@Transactional的使用之前,我们先回顾一下事务的一些基本内容。 事务的基本概念 先来回顾一下事务的基本概念和特性。数据库事务(Database Transaction) ,是指作为单个逻辑工...

无信不立 ⋅ 2016/10/13 ⋅ 0

Spring切入点表达式常用写法

自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异。 下面给出一些常见示例的写法: 比如,下面是一个对Servi...

凯文加内特 ⋅ 2016/03/09 ⋅ 0

aop:pointcut expression解析

execution( com.aptech.jb.epet.dao.hibimpl..(..)) 如许写应当就可以了 这是com.aptech.jb.epet.dao.hibimpl 包下所有的类的所有办法。。 第一个代表所有的返回值类型 第二个代表所有的...

ArlenXu ⋅ 2015/01/18 ⋅ 0

JFinal 整合 Hasor 之后 JFinal 会更强!!

Hasor 2.5.1 版本开始 支持深度整合 JFinal。整合之后您在使用 JFinal 时候会更爽快,JFinal 会变得更强! IoC/Aop 支持 Controller 通过 @inject 注解进行依赖注入服务。 被注入的服务支持 ...

哈库纳 ⋅ 2016/11/07 ⋅ 2

Spring切入点表达式常用写法

自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异。 下面给出一些常见示例的写法: 比如,下面是一个对Servi...

Acce1erator ⋅ 2016/02/25 ⋅ 0

Spring框架笔记(二十五)——强大的事务管理

事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 举个例子来...

HappyBKs ⋅ 2015/10/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA入门,配置文件的设置

<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http......

码农屌丝 ⋅ 19分钟前 ⋅ 0

Java基础——面向对象和构造器

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 静态成员介绍 为什么要有静态成员?静态成员用来...

凯哥学堂 ⋅ 21分钟前 ⋅ 0

vmware中Centos 7 linux的LVM磁盘扩容

系统是RHEL7(centos7差不多一样) 关闭系统,在vmware、设置、硬盘、扩展、输入数字大于当前系统内存、点击扩展。 开机再查看磁盘信息 fdisk -l 注意:可以看出sda磁盘增加了,但是根目录还...

gugudu ⋅ 31分钟前 ⋅ 0

JAVA线程sleep和wait方法区别

昨天面试,突然被问到sleep 和 wait的区别,一下子有点蒙,在这里记一下,以示警戒。 首先说sleep,sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过去后,cpu...

徐玉强 ⋅ 33分钟前 ⋅ 0

vuex学习--模块

随着项目复杂性增加,共享状态也越来越多。需要对转态操作进行分组,分组后在进行分组编写。学习一下module:状态管理器的模块组操作。 首先是声明: const moduleA={ state,mutations,g...

大美琴 ⋅ 35分钟前 ⋅ 0

Selenium 简单入门

安装 pip install selenium 驱动下载 https://chromedriver.storage.googleapis.com/index.html 下载最新的驱动,放入path中,可以放入Python的scripts目录下,也可以放入Chrome安装目录,并...

阿豪boy ⋅ 37分钟前 ⋅ 0

292. Nim Game - LeetCode

Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢。 n 是否能赢1 true2 true3 true4 false 不论删除几,对方都能一把赢5 t...

yysue ⋅ 今天 ⋅ 0

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

zip压缩工具 zip命令可以压缩目录和文件,-r 压缩目录。 zip使用方法 zip 1.txt.zip 1.txt //压缩文件 zip -r 123.zip 123/ //压缩目录 unzip 1.txt.zip //解压 unzip 123.zip -d /root/456...

Linux_老吴 ⋅ 今天 ⋅ 0

react-loadable使用跳坑

官方给react-loadable的定义是: A higher order component for loading components with dynamic imports. 动态路由示例 withLoadable.js import React from 'react'import Loadable fro......

pengqinmm ⋅ 今天 ⋅ 0

记录工作中遇到的坑

1、ios safari浏览器向下滚动会触发window resize事件

端木遗风 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部