spring--aop

bean 的作用域:
1 singleton 属于单列  所有对bean的请求,只要id和bean定义的匹配 则返回bean的同一个实列
在bean配置中书写属性 scope=“singleton”   或者 singleton=“true”
2 prototype  每一次请求 都会产生一个新的bean 相当于new操作 
在bean配置中书写  scope=“prototype”  或者 singleton=“false”,


aop:
面向切面 
aop帮助我们将服务模块化   让组件更加专注于自身业务,有点basedao的感觉  有一种将一些重复写的代码提取出来 单独列出  当
要用它的时候 自动用上 使用  一种切面的感觉   大概意思




核心概念:
1 切面 实现交叉的功能的地方
2 连接点 有地方需要使用切面的地方就是连接点
3 通知 通知是指某个切入点要执行的代码
4 切除点 调用方法时的点就是切入点
5 引入 引入允许你为已存在的类添加新的方法 和属性
6 目标对象 就是被通知的对象
7 代理 aop创建的对象就是代理 用代理来连接目标对象
8 织入 将切面应用到目标对象而创建代理对象


创建通知:
//session出现
private SqlSession session;
/**
* 前置通知
* 遵循这套规则的点都是连接点
* 第一个*是修饰符
* 在目标方法执行之前 ,执行一些操作
*/
@Before(value="execution(* com.spring.service.impl.*impl.*(..))")
public void beforAdvice(){


}

/**
* 后置通知
* 不管有没有抛异常或有没有返回 都执行该方法
*/
@After(value="execution(* com.spring.service.impl.*impl.*(..))")
public void afterAdvice(){
session.close();

}

/**
* 后置返回通知
* 在目标方法执行后 获取目标方法的返回
*/
@AfterReturning(returning="ret",value="execution(* com.spring.service.impl.*impl.*(..))")
public void afterReturnAdvice(Object ret){

}

/**
* 后置异常通知
* 方法抛出异常则获取目标方法
* 注意:对象不要自己抓获异常,
* 要向上抛,否则无法获取目标
*/
@AfterThrowing(throwing="thr",value="exetion(* com.spring.service.impl.*impl.*(..))")
public void afterExcetionAdvice(Throwable thr){
session.rollback();

}

/**
* 环绕通知
* 固定参数ProceedingJoinPoint 进程连接点
* @throws Throwable 
*/
遵循这套规则的点都是连接点
// * 修饰符  路径 *Impl 代表所有实现类//*(..) 实现类里面的所有方法
@Around(value="execuption=(* com.spring.service.impl.*impl.*(..))")
public Object aroundAdvice(ProceedingJoinPoint pdj) throws Throwable{
//得到session事务管理器
session=DBTools.getSession();
//得到所有参数
Object[] object = pdj.getArgs();
//session复制给第一个session
object[0] = session;
//
Object result = pdj.proceed(object);
//提交
session.commit();

return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值