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的更多相关文章
随机推荐
- Delphi属性比对象的域有更强的功能
8.4 Delphi自定义组件(3) http://tech.163.com 2006-04-29 11:49:34 来源: 清华大学出版社 网友评论0 条 论坛 3. 测试未安装的组件 在将新组 ...
- H264--1--编码原理以及I帧B帧P帧[4]
---------------------- 前言 ----------------------- H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理 ...
- MPEG2、MPEG4、H264的差异
iso(国际标准化组织) MPEG系列 ITU-T(国际电联)h.系列 H.264:iso与ITU联合制定,数据压缩比超牛! MPEG-2简介 MPEG-2制定于1994年,设计目标是高级工业标准的图 ...
- linux下的C语言开发 GDB的例子
在很多人的眼里,C语言和linux常常是分不开的.这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品.当然,linux操作系统本身对C语言的支持也是相当到位的.作为一个真正 ...
- bzoj4818
http://www.lydsy.com/JudgeOnline/problem.php?id=4818 矩阵快速幂+dp 首先我们来写一个dp dp[i][j]:选到第i个数,和为j,复杂度nm,不 ...
- 基于ELK的传感器数据分析练习
目录 Sensor Data Analytics Application 数据构成 数据模型设计 Logstash配置 Kibana可视化 Sensor Data Analytics Applicat ...
- 清北考前刷题day4早安
LI /* 没有考虑次大值有大于一个的情况 */ #include<iostream> #include<cstdio> #include<cstring> # ...
- 关于Anaconda环境变量配置遇到的一些情况说明
安装和配置环境变量的话就不多说了,大家可以参照这个说的去做就行 https://blog.csdn.net/weixin_42997646/article/details/89414769 验证配置环 ...
- C#和C++的区别(一)
C#特性 1.指针可以有++.--运算,引用不可以运算: 2.类或结构的默认访问类型是internal 类的所有成员,默认是private 3.属性:用于定义一些命名特性,通过它来读取和写入相关的特性 ...
- 51nod1381 硬币游戏
1381 硬币游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 有一个简单但是很有趣的游戏.在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平 ...