Spring框架AOP的使用及个人对底层原理的理解

简介: Spring框架AOP的使用及个人对底层原理的理解前言:AOP是目前Spring框架中的核心之一,在应用中具有非常重要的作用,也是Spring其他组件的基础。它是一种面向切面编程的思想。关于AOP的基础知识,相信多数童鞋都已经了如指掌,今天要给大家分享的是Spring框架AOP的使用,以及我个人对底层原理的一些理解。

Spring框架AOP的使用及个人对底层原理的理解QQ_20190730163049

前言:

AOP是目前Spring框架中的核心之一,在应用中具有非常重要的作用,也是Spring其他组件的基础。它是一种面向切面编程的思想。关于AOP的基础知识,相信多数童鞋都已经了如指掌,今天要给大家分享的是Spring框架AOP的使用,以及我个人对底层原理的一些理解。

Aop使用步骤

配置aop信息

相当于aop的根节点

配置切入点

切入点 可以理解为需要增强的方法的位置

如:

execution( com.mmr.entity.People.(..) )

表示这个切入点的位置在com.mmr.entity.People 这个类里;

第一个星号:表示访问权限是任意,也可以设置为private,protected。。。。。

第二个星号:表示People类下面的所有方法

(..)表示任意参数

包后面两个点表示包含子包下面的类,单点不包含子包

配置切入面

ref 指定的是用什么类来增强,指向的是一个bean

配置切入时间

......此类标签指定切入时间

after---最终 相当于try catch 中的finally

after-returning 后置,方法无异常执行完后

method 指定用哪个方法来增强(ref中指向的类中的方法)

pointcut-ref 指定增强的切入点

配置示例:

注意:

spring Aop 底层采用了动态代理(jdk自带的动态代理 + cglib 动态代理)的方式来实现增强

所以如果被增强的类(委托类)实现了接口,则会采用jdk自带的动态代理方式,所以需要使用接口来接收,不能直接使用实现类接收!

而如果委托类未实现接口,则采用cglib动态代理的方式,所以可以用委托类直接接收

喜欢这篇文章的话,可以给作者点个喜欢,点下关注,每天都会分享Java相关文章!

记得一定要关注我哦,会不定时的福利赠送,包括整理的面试题,学习资料,源码等~~

相关文章
|
2天前
|
运维 Java 程序员
Spring5深入浅出篇:基于注解实现的AOP
# Spring5 AOP 深入理解:注解实现 本文介绍了基于注解的AOP编程步骤,包括原始对象、额外功能、切点和组装切面。步骤1-3旨在构建切面,与传统AOP相似。示例代码展示了如何使用`@Around`定义切面和执行逻辑。配置中,通过`@Aspect`和`@Around`注解定义切点,并在Spring配置中启用AOP自动代理。 进一步讨论了切点复用,避免重复代码以提高代码维护性。通过`@Pointcut`定义通用切点表达式,然后在多个通知中引用。此外,解释了AOP底层实现的两种动态代理方式:JDK动态代理和Cglib字节码增强,默认使用JDK,可通过配置切换到Cglib
|
2天前
|
XML Java 数据格式
Spring使用AOP 的其他方式
Spring使用AOP 的其他方式
14 2
|
2天前
|
XML Java 数据格式
Spring 项目如何使用AOP
Spring 项目如何使用AOP
17 2
|
4天前
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
28 6
|
8天前
|
Java 开发者 Spring
Spring AOP的切点是通过使用AspectJ的切点表达式语言来定义的。
【5月更文挑战第1天】Spring AOP的切点是通过使用AspectJ的切点表达式语言来定义的。
21 5
|
8天前
|
XML Java 数据格式
Spring AOP
【5月更文挑战第1天】Spring AOP
25 5
|
8天前
|
Java 编译器 开发者
Spring的AOP理解
Spring的AOP理解
|
8天前
|
XML Java 数据格式
如何在Spring AOP中定义和应用通知?
【4月更文挑战第30天】如何在Spring AOP中定义和应用通知?
16 0
|
8天前
|
安全 Java 开发者
在Spring框架中,IoC和AOP是如何实现的?
【4月更文挑战第30天】在Spring框架中,IoC和AOP是如何实现的?
20 0
|
8天前
|
Java 测试技术 开发者
【亮剑】如何通过自定义注解来实现 Spring AOP,以便更加灵活地控制方法的拦截和增强?
【4月更文挑战第30天】通过自定义注解实现Spring AOP,可以更灵活地控制方法拦截和增强。首先定义自定义注解,如`@MyCustomAnnotation`,然后创建切面类`MyCustomAspect`,使用`@Pointcut`和`@Before/@After`定义切点及通知。配置AOP代理,添加`@EnableAspectJAutoProxy`到配置类。最后,在需拦截的方法上应用自定义注解。遵循保持注解职责单一、选择合适保留策略等最佳实践,提高代码可重用性和可维护性。记得测试AOP逻辑。