Spring-AOP(Aspectj)面向切面

Spring-AOP

AOP:面向切面编程,相对于OOP面向对象编程
AOP主要的目的是为了解耦。
在OOP中是能通过继承类和实现接口,而这样的代码耦合性就会相对较高,而且继承只能是单继承,阻碍了更多的行为。
AOP可以让一组类(一个切面)共享相同的行为,弥补了OOP的不足。
Spring支持Aspectj的注解式面向切面编程

添加依赖至POM文件

Spring-AOP(Aspectj)面向切面


基于注解方式拦截

编写拦截规则的注解@Action
Spring-AOP(Aspectj)面向切面
编写切面配置类
Spring-AOP(Aspectj)面向切面
编写被拦截的方法,使用@Action注解方法
Spring-AOP(Aspectj)面向切面
在配置类上加上@EnableAspectJAutoProxy开启Spring对Aspectj的支持
Spring-AOP(Aspectj)面向切面
运行
Spring-AOP(Aspectj)面向切面

基于Java方式拦截

编写被拦截的方法
Spring-AOP(Aspectj)面向切面
编写拦截规则
Spring-AOP(Aspectj)面向切面
运行
Spring-AOP(Aspectj)面向切面

相对于基于Java的拦截方式,基于注解的方式能更好的的控制拦截的粗细粒度,并能获取更多的信息。