IOC理论
IOC是Inversion of Control的缩写,翻译为:“控制反转”;由于高耦合度带来的缺点是很明显的,要改善这种情况,我们只能将各个模块进行解耦,让各个模块之间的依赖性不再那么地强,也就是说,Service的实现类,不再由我们决定,而是让程序自己决定,所有的实现类对象,全部交给程序来管理,所有对象之间的关系,也由程序来动态决定,这样就引入了IoC理论
AOP理论
Aspect Oriented Programming(面向切面编程、面向方面编程),其实就是面向特定方法编程
AOP核心概念
AOP通知类型
1.@Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行
2.@Before:前置通知,此注解标注的通知方法在目标方法前被执行
3.@After :后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行
4.@AfterReturning :返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行
5.AfterThrowing :异常后通知,此注解标注的通知方法发生异常后执行
通知顺序
切入点表达式
常见形式:
1.execution(.):根据方法的签名来匹配
2. @annotation(..):根据注解匹配
实例:
1 自定义注解
2加上注解
连接点
对于 @Around 通知,获取连接点信息只能使用 ProceedingJoinPoint
对于其他四种通知,获取连接点信息只能使用 JoinPoint,它是 ProceedingJoinPoint 的父类型
实例:
定义切面类
运行查看控制台
导入依赖:在pom.xml中导入AOP的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>