动态代理
文章平均质量分 90
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
彻底理解Java动态代理
代理设计模式定义:为其他对象提供一种代理以控制对这个对象的访问。动态代理使用java动态代理机制以巧妙的方式实现了代理模式的设计理念。代理模式示例代码public interface Subject { public void doSomething(); } public class RealSubject implements Subject ...转载 2017-11-02 14:48:58 · 341 阅读 · 0 评论 -
记一次Java动态代理实践
导语:在Java生态中,我们经常直接或者间接的用到动态代理,比如通过动态代理调用远程服务,再比如通过动态代理实现解耦。本文结合京东服务框架JSF,讲述京东使用动态代理进行抽象的一次实践,以达到升级数据库访问层的目的。刘世杰,京东商城Java高级开发工程师,一直从服务端研发工作,目前主要负责京东海外站商品主数据基础服务。个人喜欢读源码,注重细节,有些许代码洁癖。对高可用、高性能、高并发方面...转载 2018-12-01 21:11:00 · 217 阅读 · 0 评论 -
【手写系列】纯手写实现一个高可用的RPC
前言在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以接口的形式提供给A。通常都是B把API上传到Maven私服,然后B开始写API的实现,A只需要引入API依赖进行开发即可。订单服务调用商品服务上图简单的描述了RPC在实际场景中的应用,我们在开发中当然是利用现有的RPC框架来快速实现业务需求,比如百度开源了bai...转载 2018-11-23 09:43:10 · 1708 阅读 · 3 评论 -
分析动态代理给Spring事务埋下的坑
前言Spring的声明式事务让我们不再编写获得连接、关闭连接、开启事务、提交事务、回滚事务等代码,通过一个简单的@Transactional注解,就让我们轻松进行事务处理。我们知道Spring事务基于AOP,采用动态代理实现,虽然使用简单,但是在实际场景中,我们也会遇到一些坑。而往往遇到坑之后,我们都会茫然,这是由于没有对Spring事务的实现机制做一点了解导致的。因此本篇博客将从原理的角度分...转载 2018-11-23 09:00:43 · 250 阅读 · 0 评论 -
【手写系列】透彻理解MyBatis设计思想之手写实现
前言MyBatis,曾经给我的感觉是一个很神奇的东西,我们只需要按照规范写好XXXMapper.xml以及XXXMapper.java接口。要知道我们并没有提供XXXMapper.java的实现类,MyBatis到底是怎么做到这一点的呢?有人会说是动态代理,现在我就来通过手写一个迷你版的MyBatis来彻底理解它的设计思想!如果你不了解JDK动态代理,请参考:《纯手写实现JDK动态代理》...转载 2018-11-21 08:46:14 · 713 阅读 · 0 评论 -
【手写系列】纯手写实现JDK动态代理
前言在Java领域,动态代理应用非常广泛,特别是流行的Spring/MyBatis等框架。JDK本身是有实现动态代理技术的,不过要求被代理的类必须实现接口,不过cglib对这一不足进行了有效补充。本篇博客将涉及2个话题:第一,JDK动态代理的实现原理,带你探索动态代理的实质面目;第二,自己动手写代码去实现JDK动态代理,去创造世界! JDK动态代理先写一个例子,感性认识下动态代理...转载 2018-11-20 08:36:56 · 800 阅读 · 0 评论 -
牛逼哄哄的 RPC 框架,底层到底什么原理?
1. RPC框架的概念RPC(Remote Procedure Call)–远程过程调用,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用RPC可以解耦系统,方便维护,同时增加系统处理请求的能力。上面是一个简单的软件系统结构,我们拆分出来用户系统和订单系统做为服务存在,让不同的站点去调用。只需要引入各个服务的接口包,在代码中调用RPC服务就跟调用本地...转载 2018-11-03 00:09:40 · 1051 阅读 · 0 评论 -
设计模式之动态代理模式实战
昨天分享了静态代理的概念及存在的缺点,所以今天讲的动态代理模式十分重要。动态代理在我们工作当中应用相当广泛,如Srping AOP就是动态代理的在开源框架的比较出名的应用。动态代理有两种试,一是通过JDK自带的API实现动态代理,二是通过别的字节码框架实现,如cglib。需要注意的是JDK只能针对接口实现动态代理,不能代理普通类,使用具有局限性。而cglib可以代理接口及所有的普通类。...转载 2018-11-13 11:18:06 · 210 阅读 · 1 评论 -
Spring AOP,AspectJ,CGLIB 有点晕
AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增...转载 2018-10-21 17:59:16 · 362 阅读 · 0 评论 -
JAVA 注解的基本原理
以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高。于是就有人提出来一种标记式高耦合的配置方式,『注解』。方法上可以进行注解,类上也可以注解,字段属性上也可以注解,反正几乎需要配置的地方都可以进行注解。关于『注解』和『XML』两种不同的配置模式,争论了好多年了,各有各的优劣,注解可以提供更大的便...转载 2018-10-21 15:17:15 · 169 阅读 · 0 评论 -
Spring@Cacheable注解在类内部调用失效的问题
如图所示,getRecomendGoogs方法里面调用findImgUrlByName方法,在findImgUrlByName方法上使用@Cacheable注解的时候,并没有走缓存。要解决这个问题,首先我们需要了解spring缓存的原理。spring cache的实现原理跟spring的事务管理类似,都是基于AOP的动态代理实现的:即都在方法调用前后去获取方法的名称、参数、返回值,然后根据方...转载 2019-05-05 08:22:35 · 2401 阅读 · 0 评论