AOP(spring中的面向切面编程,作用及术语)

AOP开发的相关术语:

在这里插入图片描述
(这是一个完整的aop执行过程)

JoinPoint:连接点,可以被拦截(增强)到的点
pointCut:切入点,真正要被拦截(增强)到的点
Advice:通知、增强。方法层面的增强。比如权限校验的方法被称为是通知。
Introduction:引介,也是增强,不过是类层面的增强。一般研究的是方法层面。
Target:目标,被增强的对象(例如userDao)
Weaving:织入,将通知应用到目标的过程。比如将权限校验的代码应用到UserDao的save方法上的过程。
Proxy:一个类被AOP织入增强后,产生一个结果代理类
Aspect:切面,多个通知和多个切入点的组合

AOP主要意图

将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

切面意义何在?
  就可以在这层切面上进行统一的集中式权限管理。而业务逻辑组件则无需关心权限方面的问题。也就是说,通过切面,我们可以将系统中各个不同层次上的问题隔离开来,实现统一集约式处理。各切面只需集中于自己领域内的逻辑实现。这一方面使得开发逻辑更加清晰,专业化分工更加易于进行;另一方面,由于切面的隔离,降低了耦合性,我们就可以在不同的应用中将各个切面组合使用,从而使得代码可重用性大大增强。
3. AOP应用范围

Authentication 权限
  Caching 缓存
  Context passing 内容传递
  Error handling 错误处理
  Lazy loading 懒加载
  Debugging  调试
  logging, tracing, profiling and monitoring 记录跟踪 优化 校准
  Performance optimization 性能优化
  Persistence  持久化
  Resource pooling 资源池
  Synchronization 同步
  Transactions 事务

例如有这样一个需求:
现在有很多的 DAO 类,比如客户的 DAO,联系人 DAO 等等。客户提出
一个需求要开发人员实现一个功能对所有的 DAO 的类中以 save 开头的方法实现权限的校验,需要时管理员的身份才可以进行保存操作。

一般的aop配置过程
1.编写要增强的目标类
创建接口和类:

public interface OrderDao {
public void save();
public void update();
public void delete();
public void find();
}
public class OrderDaoImpl implements OrderDao {
@Override
public void save() {
System.out.println("保存订单...");
}
@Override
public void update() {
System.out.println("修改订单...");
}
@Override
public void delete() {
System.out.println("删除订单...");
}
@Override
public void find() {
System.out.println("查询订单...");
}
}

2.编写切面类

public class MyAspectXml {
// 前置增强
public void before(){
System.out.println("前置增强===========");
}
}

3.完成配置增强

<!-- 配置切面类 -->
<bean id="myAspectXml" class="cn.itcast.spring.demo3.MyAspectXml"></bean>
<!-- 进行 aop 的配置 -->
<aop:config>
<!-- 配置切入点表达式:哪些类的哪些方法需要进行增强 -->
<aop:pointcut expression="execution(*
cn.itcast.spring.demo3.OrderDao.save(..))" id="pointcut1"/>
<!-- 配置切面 -->
<aop:aspect ref="myAspectXml">
<aop:before method="before" pointcut-ref="pointcut1"/>
</aop:aspect>
</aop:config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值