Spring Aop 是如何实现的
时间: 2024-03-04 07:53:41 浏览: 18
Spring AOP是基于动态代理实现的,它提供了两种代理方式:JDK动态代理和CGLIB动态代理。
1. JDK动态代理
JDK动态代理是基于接口的代理方式,它要求被代理对象必须实现一个接口,代理对象和被代理对象实现相同的接口,通过代理对象调用被代理对象的方法,并在方法调用前后进行增强。
Spring AOP使用JDK动态代理时,如果被代理的对象实现了接口,Spring AOP就会使用JDK动态代理来生成代理对象。代理对象实现了与目标对象相同的接口,因此可以将代理对象传递给任何期望目标对象的地方。
2. CGLIB动态代理
CGLIB动态代理是基于字节码的代理方式,它可以代理没有实现接口的类。CGLIB动态代理通过继承来实现代理,它创建目标对象的子类,并重写其中的方法来实现增强。
当目标对象没有实现接口时,Spring AOP会使用CGLIB动态代理来生成代理对象。代理对象继承了目标对象,并重写了目标对象的方法,因此可以将代理对象传递给任何期望目标对象的地方。
总之,Spring AOP通过使用动态代理技术,在运行时动态地代理目标对象,从而实现AOP功能。具体使用哪种代理方式,取决于被代理对象是否实现了接口。
相关问题
spring aop 是如何实现的
Spring AOP是基于动态代理实现的,它提供了两种代理方式:JDK动态代理和CGLIB动态代理。
1. JDK动态代理
JDK动态代理是基于接口的代理方式,它要求被代理对象必须实现一个接口,代理对象和被代理对象实现相同的接口,通过代理对象调用被代理对象的方法,并在方法调用前后进行增强。
Spring AOP使用JDK动态代理时,如果被代理的对象实现了接口,Spring AOP就会使用JDK动态代理来生成代理对象。代理对象实现了与目标对象相同的接口,因此可以将代理对象传递给任何期望目标对象的地方。
2. CGLIB动态代理
CGLIB动态代理是基于字节码的代理方式,它可以代理没有实现接口的类。CGLIB动态代理通过继承来实现代理,它创建目标对象的子类,并重写其中的方法来实现增强。
当目标对象没有实现接口时,Spring AOP会使用CGLIB动态代理来生成代理对象。代理对象继承了目标对象,并重写了目标对象的方法,因此可以将代理对象传递给任何期望目标对象的地方。
总之,Spring AOP通过使用动态代理技术,在运行时动态地代理目标对象,从而实现AOP功能。具体使用哪种代理方式,取决于被代理对象是否实现了接口。
spring aop是如何实现的
Spring AOP是一种用于模块化应用程序开发的面向切面编程(AOP)技术,它允许用户将小型模块(也称为切面)编写到业务逻辑中,以实现横切关注点(即日志记录,安全性,缓存等)的重复功能。它使用一种叫做代理的技术对对象进行包装,以添加切面的功能。