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的更多相关文章
随机推荐
- H264--4--H264编码[7]
----------------------------------- 编码器输出格式 ---------------------------------- 总的来说H264的码流的打包方式有两种,一 ...
- 【HDU 2010】水仙花数
http://acm.hdu.edu.cn/showproblem.php?pid=2010 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位 ...
- uva11542
https://vjudge.net/problem/UVA-11542 xor高斯消元... 答案为2^f-1 其实书上有一个问题 样例有3种情况,其中4,6,15是绑在一起的,也就是他们必须满足一 ...
- 解决Error for wireless request "Set Mode" (8B06) 问题 (转载)
转自:http://blog.csdn.net/muge0913/article/details/17062871 在运行以下命令的时候,意外的出错,最后google了下,最终才确定了原因,因为在运行 ...
- MySQL5.6 windows msi安装介绍
200 ? "200px" : this.width)!important;} --> 一.功能介绍 1.MySQL Servers 该功能是mysql主要的服务,也是必须安 ...
- 清北考前刷题day6下午好
/* 贪心 负数一定不取 枚举最高位是1 且答案取为0的 位置, 更新答案. */ #include<iostream> #include<cstdio> #include&l ...
- Linux学习之01_基础命令介绍
初学Linux,还在摸索中,在这个过程中希望能记录下学习到的东西,参考的的书籍为<鸟哥的Linux私房菜> 在这里学到的主要命令有这几个: data cal bc man shutdown ...
- 个人作品:EasyPicker(轻取)简洁而又实用的文件收取Web应用
EasyPicker简洁实用且方便的在线文件收取Web应用 小弟我作为班上的学委,有一个伟大的职责,收发各科作业(尤其是专业课的上机课),上机==写报告,此时就产生了实验报告这个玩意儿,一个班少则4 ...
- 在控制台中输出 ASP.NET 网站的跟踪信息
实现方法: 1. 可以在 C# 代码中调用 System.Diagnostics.Debug.WriteLine() 来实现. 其效果类似于在控制台应用程序中调用 Console.WriteLine( ...
- ibatis入门教程一
这几天研究ibatis玩,参考一篇贴子进行安装配置:蓝雪森林 选择这个帖子来跟随配置是因为这个帖子看着比较干净,但是我仍旧在配置得过程中出现了好几个问题,所以我决定在这个帖子的基础上将更多细节加上,做 ...