为了账号安全,请及时绑定邮箱和手机立即绑定

百万架构师第十六课:源码分析:Spring 源码分析:手写SpringAOP核心原理|JavaGuide

标签:
Java
已完成
  • Spring IOC
  • Spring DI
  • Spring MVC
继续完善:

Spring AOP 的功能,基于 Spring IOC 和 DI 去完成

未完成: Spring AOP、Spring Transaction、Spring JDBC、自己手写 ORM 框架。

​ Spring IOC 入口,DispatcherServlet,通过 DispatcherServlet 启动一个 ApplicationContext 容器,由 ApplicationContext 启动一个 IOC 的操作,通过 DarianBeanDefinitionReader 读进来,变成一个 DarianBeanDefinition,有一个 DI 过程,有一个依赖注入,完成之后,会把所有的对象封装成 BeanWrapper,再把 BeanWrapper 保存在容器中。DI 是从一个 getBean 开始的。 IOC 是从 refresh() 开始的。

​ 所有的对象在 IOC 中都有一个代理的过程,在 Spring 中真实的对象,我们基本上是拿不到的。我们会有一个 AOP 的过程,我们代理的过程主要是由一个掌控力,代理之后,对象都是由 Spring 去掌控了,而不是最原始的对象了。我们 Spring 只是为了帮你保存下来最原始的对象,不会做任何更改,我们 Spring 操作的都是被代理过的对象。

​ BeanWrapper中,我们保存了最原始的对象和代理后的对象。

​ Spring 会根据你一个目标接口,也就是目标的一个类,有没有实现接口。Java 中不能支持多实现的。如果你实现了接口,他就会选择 JDK, 如果没有实现,他就会选择 Cglib。它是有策略的。

<aop:pointcut expression="execution(* com.gupaoedu.vip.aop.service..*(..))" id="simplePointcut"/>

使用的时候要调代理对象,但是判断的时候要调原生对象。

微信公众号:不止极客

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消