spring aop用的什么代理
时间: 2023-11-20 10:17:21 浏览: 34
Spring AOP默认使用的是JDK动态代理。
引用提到了如果要修改SpringBoot使用JDK动态代理,可以设置spring.aop.proxy-target-class=false。而引用中的例子也展示了如何使用CGLIB的Enhancer类创建代理对象,所以可以得出结论,Spring AOP可以支持使用JDK动态代理和CGLIB动态代理。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
相关问题
spring aop jdk动态代理
Spring AOP中的JDK动态代理是一种实现动态代理的方式。它通过使用JDK的Proxy类和InvocationHandler接口来生成代理对象和处理代理逻辑。具体来说,当我们使用Spring AOP时,代理对象的生成直接使用了JDK动态代理的Proxy.newProxyInstance方法。而代理逻辑则是通过实现了InvocationHandler接口的invoke方法来实现的。在Spring AOP中,JdkDynamicAopProxy类实现了InvocationHandler接口,并完成了Spring AOP拦截器链拦截等一系列逻辑。通过JdkDynamicAopProxy的invoke方法,我们可以在目标方法执行前后添加额外的逻辑。这种方式的优点是可以在运行时动态地生成代理对象,不需要事先编写代理类的代码。这样可以更加灵活地实现横切关注点的功能,并且可以避免代码冗余。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Spring AOP --JDK动态代理方式](https://blog.csdn.net/m0_46195271/article/details/108714116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [SpringAOP JDK动态代理](https://blog.csdn.net/weixin_46281472/article/details/125629339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
springaop为什么用了aspectj
Spring AOP是Spring框架中的一个重要模块,它提供了一种基于面向切面编程(AOP)的方式来实现横切关注点的功能。而AspectJ是一个独立的AOP框架,它提供了更强大和灵活的AOP功能。
Spring AOP选择使用AspectJ的原因主要有以下几点:
1. 功能强大:AspectJ提供了更丰富的AOP功能,支持更多的切点表达式和切面类型。相比之下,Spring AOP的功能相对较为简单,只支持基于代理的AOP。
2. 集成方便:Spring AOP与AspectJ的集成非常方便。Spring框架提供了对AspectJ注解的支持,可以直接在Spring应用中使用AspectJ注解来定义切面和切点,而无需引入额外的AspectJ编译器。
3. 兼容性:Spring AOP与AspectJ兼容性良好。Spring AOP可以与AspectJ编译器一起使用,通过编译时织入或者加载时织入的方式来实现AOP功能。这样可以在不修改现有代码的情况下,将AspectJ的切面应用到Spring应用中。
综上所述,Spring AOP选择使用AspectJ是为了提供更强大和灵活的AOP功能,并且与Spring框架的集成更加方便和兼容。