AOP简介
AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
重点概念:
Pointcut(切入点):被增强的方法
Advice(通知/增强):封装增强业务逻辑的方法
Aspect(切面):切点+通知
Weaving(织入):将切点与通知结合的过程
基于xml的AOP开发:
步骤如下:
1、导入AOP的相关坐标:aspectjweaver
2、创建目标接口和目标类,即切点(被增强的方法)
3、创建切面类(内部由增强方法即通知)
4、在applicationContext.xml中配置目标对象和切面对象
5、在applicationContext.xml中进行织入,即将声明切面(将切点和通知结合起来)
注:主要就是在xml中将需要增强的方法(切点)和切面类中的方法(通知)进行织入产生联系。
切点表达式的写法:
上面这个最常用,含义是aop包下的任意类的任意方法(返回值类型为*)都会被增强
上面这个实例的含义是aop包及其任意子包下的任意类下的任意方法(返回值类型为*)都会被增强
通知的类型:
抽取切点表达式:
基于注解的AOP开发:
前两步和之前一样
3、切点和切面类需要写明Component
需要@Aspect注解声明该类为切面类
4、直接在切面类中用注解配置织入关系
5、在配置文件中开启组件扫描和aop自动代理
切点表达式的抽取:在切面类中定义切点,用@Pointcut注解指明切点表达式,使用的时候有下面两种方式。