欢迎光临散文网 会员登陆 & 注册

Java高阶—代理设计模式从抢银行开始说起

2023-06-15 23:16 作者:懒人Java屈原  | 我要投稿

Java的设计模式多达23种,这二十三般绝艺,绝大多数人都是样样精通,样样疏松,咋一看猛如虎,定眼一瞧,只会用在main函数。大家都用Mybatis框架,增删改查都不怕,若要问你只见接口不见实现是为啥,你脑袋一拍,得去找真专家。今天我从代理设计模式出发结合Mybatis框架给大家讲解一下。

静态代理——套丝袜抢银行

你是法外狂徒张三,你准备策划一起抢银行事件,你开始进行思考,然后你聪明的大脑灵光一现∑(●ΦДΦ●),你决定给自己套上丝袜。这样你就套上了一层壳子,抢银行的是丝袜变态,关我张某人什么事情 ԾωԾ,这就是静态代理。

动态代理——哥谭Joker:you completed me

由于你上次的策划行动很完美,你引起了哥谭义警的注意,同时你也成为了闻名遐迩的犯罪大师,你现在改名Joker,人送外号莫里亚蒂,也看不上以前的拙劣伎俩,你开始策略一起完美的犯罪。你准备藏身在幕后,指挥别人去完成,但是你担心会走漏消息,该怎么办呢,你进行思考。

∑(●ΦДΦ●),这时,一道灵光闪过你聪明的大脑。你先脑海里挑出龙套A,B,C一直到Z,26个候选人。等到抢劫时倒计时5分钟,你再从26个人中,临时选一个出去干,这样消息就不会走漏了,不愧是你。

罪案实录——mybatis是怎么抢银行的

Mybatis的作者以及使用Mybatis框架的我们当然是聪明人啦,所以让我们来看看大聪明们都是怎么办的吧。

犯罪第一步:挑龙套

Mybatis框架的这个注解,实现了ImportBeanDefinitionRegistrar接口。其实现类,会扫描配置的mapper接口,然后封装成factoryBean(龙套们)。这个接口会在Spring框架的invokeBeanFactoryPostProcessor方法,在Bean实例化之前,同@Configuration,@Import,@Bean等标签一起处理,注入到Spring的上下文中。

犯罪第二步:抢银行

Spring框架,在完成实例化后,会去判断这个实例的类型是不是FactoryBean类型,如果是的话,会去调用FactoryBean.getObject()方法,生成一个新的实例替代掉。让我们看看MyBatis的底层怎么做的吧。

看清楚了吧,Mybatis的底层就是通过动态代理,让接口实例化的。

如果你觉得内容干货满满,对你有用的话,记得点赞收藏与关注我哦,我会继续推出更多优质的内容。


Java高阶—代理设计模式从抢银行开始说起的评论 (共 条)

分享到微博请遵守国家法律