配置切面出现问题,执行监听前后方法执行两次情况
2018-01-26 15:15
357 查看
import java.sql.Connection; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.zy.dev.dao.impl.JdbcDao; @Aspect @Component public class TxAop { @Autowired JdbcDao jdbcDao; Connection conn; @Before("execution(public * com.zy.dev.service.UserService.*(..))") public void before(JoinPoint joinPoint) throws Exception { conn = jdbcDao.getJdbcTemplate().getDataSource().getConnection(); conn.setAutoCommit(false); Object[] args = joinPoint.getArgs(); String name = joinPoint.getSignature().getName(); System.out.println("执行" + name + "前执行---日志"); } @After("execution(public * com.zy.dev.service.UserService.*(..))") public void atfer(JoinPoint joinPoint) throws Exception { //conn.commit(); conn.commit(); String name = joinPoint.getSignature().getName(); System.out.println("执行" + name + "后执行---日志"); } @AfterThrowing(value = "execution(public * com.zy.dev.service.UserService.*(..))", throwing = "e") public void atfer(JoinPoint joinPoint, Throwable e) throws Exception { conn.rollback(); e.printStackTrace(); String name = joinPoint.getSignature().getName(); System.out.println("执行" + name); } }
配置文件 <aop:aspectj-autoproxy proxy-target-class="true" />
如果其中切面调用方法有两次执行,那么查看spring的切面这类配置了注解和xml两种,去掉其中一种就可以 <bean class="com.zy.dev.service.TxAop"></bean>和 @Aspect @Component public class TxAop { 只能要一种
相关文章推荐
- 关于Android原生集成5+webview,监听webview返回时,执行两次onkey方法问题的解决
- android开发中遇到的问题解决之RelativeLayout执行measure(w,h)方法时,出现NullPointerException的异常情况
- 配置android时出现path问题,因为路径有中文,完美解决方法
- IIS 配置ASP网站出现的问题和解决方法
- OpenCV配置后debug出现问题(应用程序无法正常启动)的解决方法!!!
- 关于IIS6.0配置网站打开出现空白问题解决方法
- xp中配置aps.net站点 出现的iis access fail问题解决方法
- (word导出问题)解决:服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))的解决方法
- MySQL配置出现error nr. 1130问题的解决方法
- 记录android ndk配置及开发过程中出现过的问题及解决方法
- [原]Redhat-el5_x86_64下Xen安装、配置、使用及出现的问题和解决方法
- 在静态库下使用MFC和共享DLL下使用MFC 这两种情况 opencv的配置,以及配置opencv配置中容易出现的问题
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法
- 有关乱码的问题(出现??????的情况,两次解码的原因)
- 使用代码创建的控件对象,设置的事件监听方法不执行的问题
- 配置IIS是出现的问题-执行访问被拒绝-备忘
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 在chrome浏览器中出现的问题,方法的自动执行
- “超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。”问题的解决方法
- spring AOP切面编程在方法执行前后切入日志