17Aspectij
17Aspectij-2018/07/31
- 1.Aspectj基于xml
- 前置通知
- method : 通知,及方法名
- pointcut :切入点表达式,此表达式只能当前通知使用。
- pointcut-ref : 切入点引用,可以与其他通知共享切入点。
- 通知方法格式:public void myBefore(JoinPoint joinPoint){参数1:org.aspectj.lang.JoinPoint } 用于描述连接点(目标方法),获得目标方法名等
- 后置通知:目标方法后执行,获得返回值
- 通知方法格式:public void myAfterReturning(JoinPoint joinPoint,Object ret){
- 参数1:连接点描述
- 参数2:类型Object,参数名 returning="ret" 配置的
- 通知方法格式:public void myAfterReturning(JoinPoint joinPoint,Object ret){
- 环绕通知
- 通知方法格式:public Object myAround(ProceedingJoinPoint joinPoint) throws Throwable{
- 返回值类型:Object
- 方法名:任意
- 参数:org.aspectj.lang.ProceedingJoinPoint
- 抛出异常
- 执行目标方法:Object obj = joinPoint.proceed();
- 通知方法格式:public Object myAround(ProceedingJoinPoint joinPoint) throws Throwable{
- 抛出异常
- <aop:after-throwing method="" pointcut-ref="" throwing=""/>
- throwing :通知方法的第二个参数名称
- 通知方法格式:public void myAfterThrowing(JoinPoint joinPoint,Throwable e){
- 参数1:连接点描述对象
- 参数2:获得异常信息,类型Throwable ,参数名由throwing="e" 配置
- <aop:after-throwing method="" pointcut-ref="" throwing=""/>
- 前置通知
- 2.注解在方法前面注解
- 声明公共切入点
- @Pointcut("execution(* com.itheima.daspect.banno.UserServiceImpl.*(..))")private void myPointCut(){}
- @Before(value="myPointCut()")value可以省略
- @AfterReturning(value="myPointCut()" ,returning="ret")
- @Around("myPointCut()")
- @AfterThrowing(value="execution(* com.itheima.daspect.banno.UserServiceImpl.*(..))" ,throwing="e")
- 声明公共切入点
- 3.JdbcTemplate
- 创建数据源(连接池) dbcp
BasicDataSource dataSource = new BasicDataSource();
// 基本4项
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/ee19springday02");
dataSource.setUsername("root");
dataSource.setPassword("1234"); - 创建模板
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource); - 通过api操作
jdbcTemplate.update("insert into t_user(username,password) values(?,?);", "tom","998");
- 创建数据源(连接池) dbcp
- 4.传播行为:在两个业务之间如何共享事务
- PROPAGATION_REQUIRED , required , 必须 【默认值】 支持当前事务,A如果有事务,B将使用该事务。 如果A没有事务,B将创建一个新的事务。
- PROPAGATIONREQUIRESNEW , requires_new ,必须新的 如果A有事务,将A的事务挂起,B创建一个新的事务 如果A没有事务,B创建一个新的事务
- PROPAGATION_NESTED ,nested ,嵌套 A和B底层采用保存点机制,形成嵌套事务。
- 5.手动管理事务
- 1.service 需要获得 TransactionTemplate
- 2.spring 配置模板,并注入给service
- 3.模板需要注入事务管理器
- 4.配置事务管理器:DataSourceTransactionManager ,需要注入DataSource
17Aspectij的更多相关文章
随机推荐
- Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学题
C. Vasya and Petya's Game ...
- XMU 1125 越野车大赛 【三分】
1125: 越野车大赛 Time Limit: 500 MS Memory Limit: 64 MB Special JudgeSubmit: 8 Solved: 4[Submit][Statu ...
- 安装linux系统-CentOS-6.8-x86_64-minimal.iso
1: 2: 3:单击[Next]继续安装. 4:安装语言,选择[Chinese(Simplified)(中文(简体))]菜单,单击[Next]继续. 5:系统键盘,选择[美国英语式]菜单,单击[下一步 ...
- C语言8大经典排序算法(1)
算法一直是编程的基础,而排序算法是学习算法的开始,排序也是数据处理的重要内容.所谓排序是指将一个无序列整理成按非递减顺序排列的有序序列.排列的方法有很多,根据待排序序列的规模以及对数据的处理的要求,可 ...
- android 3G移植【转】
本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17028383 一 开发环境简介 内容 说明 3G模块 华为EM820W(WCDMA ...
- oracle数据库的导入 导出实例
oracle数据库的导入 导出实例 分类: DataBase2011-09-07 23:25 377人阅读 评论(0) 收藏 举报 数据库oraclefileusercmdservice 我要从另外一 ...
- render same axis
// 当前渲染相机的参数 QGlobalCamera* curRenderCamera = _getWorld()->getMainCam(); const Matrix4& ...
- python使用ddt模块对用例执行操作
import time import unittest import ddt from selenium import webdriver TEST_URL = "http://www.ba ...
- java io 读取写文件
java 读取txt文件,汉字乱码,原因是因为文件的编码格式和程序编码采用了不同的编码格式.通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码 ...
- 51nod 1166 大数开平方
1166 大数开平方 基准时间限制:4 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 给出一个大整数N,求不大于N的平方根的最大整数.例如:N = 8,2 * 2 ...