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的更多相关文章
随机推荐
- 【bzoj4542】[Hnoi2016]大数
#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> # ...
- go7---map
package main /* map 类似其它语言中的哈希表或者字典,以key-value形式存储数据 Key必须是支持==或!=比较运算的类型,不可以是函数.map或slice, 这3中类型都不能 ...
- 【Silverlight】Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer)(转)
[Silverlight]Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer) 如果我们需要在Bing Maps中加入一个小图钉标记,该如何实现了? ...
- Bing必应地图中国API一显示地图 (转) 做人要厚道
Bing必应地图中国API一显示地图 2011-05-24 14:27:31| 分类: Bing&Google|字号 订阅 微软必应地图中国地图API发布已经有10天了,考虑到网上现 ...
- Called attach on a child which is not detached
问题:Called attach on a child which is not detached: ViewHolder#出现问题的原因 经过google后发现,出现该问题的原因是由于recycle ...
- hdoj--2186--悼念512汶川大地震遇难同胞——一定要记住我爱你(模拟水题)
悼念512汶川大地震遇难同胞--一定要记住我爱你 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- POJ1259 The Picnic 最大空凸包问题 DP
POJ1259 给定平面上100个点 求一个最大的凸包,使得它不包含其中任意点,且凸包的顶点是题目所给的点. 枚举凸包左下角的点,顺时针枚举第二个点, 用opt[i][j]记录 i作为第二个点, 且第 ...
- WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...
- E20180121
signature n. 签名; 署名; 识别标志,鲜明特征; [医] 药的用法说明;
- VUE学习之计算属性computed
计算属性:computed 先看一下官网的说法 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="ex ...