当前位置: 首页 > 图灵资讯 > java面试题> 美团java面试题-说下Spring AOP底层原理

美团java面试题-说下Spring AOP底层原理

来源:图灵教育
时间:2023-11-07 09:52:54

  问:说下Spring AOP底层原理

  答:Spring AOP全称是面向切面编程,是spring框架的一个重要特性,它通过在运行时动态地将额外的行为(如日志记录、事务管理等)织入到应用程序的特定方法或代码块中。

  底层原理主要基于动态代理和字节码操作来实现。

  对于动态代理Spring AOP使用了JDK动态代理和CGLIB动态代理两种方式来实现代理对象的创建。如果被代理的目标对象实现了接口,Spring AOP将使用JDK动态代理来创建代理对象;如果目标对象没有实现接口,Spring AOP将使用CGLIB动态代理来创建代理对象。代理对象在运行时会拦截目标对象的方法调用,并在方法执行前后执行额外的逻辑。

  对于字节码操作,Spring AOP是通过在编译时或运行时修改字节码来实现对目标对象的增强。它使用AspectJ提供的编译器或者在运行时使用AspectJ的字节码增强器来修改字节码。通过修改字节码,Spring AOP可以在方法调用前后插入额外的代码。