首页 > 其他分享 >Spring-AOP

Spring-AOP

时间:2023-02-20 20:35:20浏览次数:28  
标签:对象 Spring 代理 接口 CGLIB AOP

AOP
 被称为面向切面编程。对单个对象(一对一)的解耦用IOC,而当有个共通组件,它对应多个其他组件(一对多),则解耦用AOP。如,拦截器。这也是为何在程序中大量的用IoC,而AOP却用的很少,因为程序中不可能有很多的共通部分。

Spring AOP 代理是什么?

代理是使用非常广泛的设计模式。简单来说,代理是一个看其他像另一个对象的对象,但它添加了一些特殊的功能。
Spring AOP是基于代理实现的。AOP 代理是一个由 AOP 框架创建的用于在运行时实现切面协议的对象。
Spring AOP默认为 AOP 代理使用标准的 JDK 动态代理。这使得任何接口(或者接口的集合)可以被代理。Spring AOP 也可以使用 CGLIB 代理。这对代理类而不是接口是必须的。

 

 

jdk代理和cglib代理原理区别
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。核心是实现InvocationHandler接口,使用invoke()方法进行面向切面的处理,调用相应的通知。

而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。核心是实现MethodInterceptor接口,使用intercept()方法进行面向切面的处理,调用相应的通知。

如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP

如果目标对象实现了接口,可以强制使用CGLIB实现AOP

如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换
————————————————
版权声明:本文为CSDN博主「IT-熊猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BruceLiu_code/article/details/110920185

标签:对象,Spring,代理,接口,CGLIB,AOP
From: https://www.cnblogs.com/aaax/p/17138814.html

相关文章

  • SpringBoot的开启缓存@EnableCaching 和 使用缓存@Cacheable
    springboot中的缓存注解支持Spel表达式,因此这里展示常用的SpEL表达式1、开启缓存@EnableCachingimportorg.springframework.boot.SpringApplication;importorg.sp......
  • 分布式session之Spring session+redis
    给Springsession配置基于redis来存储session数据,然后配置了一个Springsession的过滤器,这样的话,session相关操作都会交给Springsession来管了,接着在代码中,就用原生的s......
  • Spring Cloud netty
    <properties><spring.boot.version>2.3.2.RELEASE</spring.boot.version><spring.cloud.version>Hoxton.SR8</spring.cloud.version><spring.......
  • Spring Cloud底层原理
    SpringCloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个......
  • springmvc异常处理
    1 DispatcherServlet的handlerExceptionResolvers在DispatcherServlet初始化过程中,执行如下初始化方法protectedvoidinitStrategies(ApplicationContextcontext......
  • 【XSS】springboot 修复 XSS漏洞
    原文参考:https://www.cnblogs.com/kinome/p/12468421.htmlHttpGetBodyimportjavax.servlet.ServletRequest;importjava.io.BufferedReader;importjava.io.IOExcep......
  • 微服务 - Spring Cloud
    @Configuration(proxyBeanMethods=false)标记了@ConfigurationSpring底层会给配置创建cglib动态代理。作用:就是防止每次调用本类的Bean方法而重新创建对象,Bean是默......
  • Spring boot中使用aop详解
    aop是spring的两大功能模块之一,功能非常强大,为解耦提供了非常优秀的解决方案。现在就以springboot中aop的使用来了解一下aop。一:使用aop来完成全局请求日志处理创建一个spri......
  • SpringBoot上传大文件的三种解决方案
    ​ 1 背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文......
  • 3 Spring Cloud Ribbon
    SpringCloudRibbonSpringCloudRibbon是一套基于NetflixRibbon实现的客户端负载均衡和服务调用工具。NetflixRibbon是Netflix公司发布的开源组件,其主要功能是提......