一、入门开发(AspectJ)
1.基于XML
2.基于注解
3.总结
xml
- 在配置文件中配置Bean,将目标类和切面类交给Spring容器管理
- 在配置文件中根据需求配置aop
注解
- 在配置文件中配置需要扫描注解的包和开启自动代理
- 在目标类和切面类上使用注解,即通过扫描后交由Spring容器管理
- 在切面类中方法上使用注解,标识目标类中哪些方法需要加强
4.原理
二、AOP
1.简介
AOP翻译成中文即面向切面编程,是作为OOP的一种补充。
作用是减少项目中的重复代码,降低模块间的耦合度,提高项目的可维护性
将项目中的一些与业务无关但影响多个对象的公共行为和逻辑,抽取并封装为一个可复用的模块,即形成切面
AOP的核心是代理模式
- 在Spring AOP框架中 采用动态代理:JDK代理、Cglib代理
- 在AspectJ框架中 采用静态代理:Aspectj代理
2.术语
- Target:目标类,需要被代理的类
- Joinpoint:连接点,可能被拦截(增强)的点
- PointCut:切入点,已经被拦截(增强)的点
- Advice:通知,增强代码
- Weaving:织入,把增强代码应用到目标类来创建代理类的过程
- Proxy:代理类,目标类被通知增强后的类
- Aspect:切面,由 通知 + 切入点 形成的面
3.JDK动态代理
- 目标类:接口CustomerDao+实现类CustomerDaoImpl
- 切面类:MyAspect
- 工厂类:MyBeanFactory
- 测试类:JDKProxyTest
4.CGLIB动态代理
- 目标类:GoodsDao
- 切面类:MyAspect
- 工厂类:MyBeanFactory
- 测试类:CGLIBProxyTest
5.AspectJ
入门开发中已介绍