
A1--spring源码及设计
文章平均质量分 73
spring源码
乐之者v
快乐编程,一生编程。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring源码(15) -- Aop动态代理之 Enhancer
源码: org.springframework.cglib.core.AbstractClassGenerator#createtry {//获取类加载器//双重检查锁, 设置 ClassLoaderData。并设置缓存。// 生成对象throw ex;原创 2024-09-30 15:46:40 · 660 阅读 · 0 评论 -
Spring源码(14) -- Aop动态代理CglibAopProxy
源码: org.springframework.aop.framework.CglibAopProxy.CglibMethodInvocation#CglibMethodInvocation。源码: org.springframework.aop.framework.CglibAopProxy#getProxy(java.lang.ClassLoader)被 net.sf.cglib.proxy.Enhancer 类调用的回调接口都会继承 Callback 接口。原创 2024-09-27 14:14:30 · 903 阅读 · 0 评论 -
Spring源码(13)--AOP 连接点及通知的方法调用的源码
代码: org.springframework.aop.framework.CglibAopProxy.CglibMethodInvocation#invokeJoinpoint。代码: org.springframework.aop.framework.CglibAopProxy.DynamicAdvisedInterceptor。代码: org.springframework.aop.framework.ReflectiveMethodInvocation#proceed。这些代码也可以看看。原创 2024-09-27 11:34:50 · 431 阅读 · 0 评论 -
Jdk动态代理源码
newProxyInstance() 方法返回指定接口的代理类实例,该代理类将方法调用分派给指定的调用处理程序(InvocationHandler)。为什么调用代理对象的方法,就会调用自定义的 MyInvocationHandler 中的 invoke()方法?实际上调用的是父类Proxy的 InvocationHandler h 的 invoke()方法。Proxy提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。示例中加入以下代码,会保存代理产生的类文件,方便查看。原创 2024-09-25 10:48:48 · 981 阅读 · 0 评论 -
Spring源码(12)-- Aop源码
Advice 抽象类。AOP的基类,包装 AspectJ切面的Advice方法。代码: org.springframework.aop.aspectj.AbstractAspectJAdvice#invokeAdviceMethodinvokeAdviceMethod() 这个方法,调用的频率非常高。// 通过JoinPoint(连接点),调用各种 Advice 方法。try {// 调用 advice 方法。原创 2024-09-16 00:00:32 · 1144 阅读 · 0 评论 -
Spring源码(11)--Spring AOP及动态代理的基础知识
CGLb采用底层的字节码技术,可以为一个类创建子类,在子类中采用方法拦截的技术拦截所有父类方法的调用并顺势织入横切逻辑。位信息,所以Spring所提供的增强接口都是带方位名的,如BeforeAdvice(前置增强)、通过Advice(增强)描述横切逻辑和方法的具体织入点(方法前、方法后、方法的两端等)。Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入切面所指定的连。之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理。原创 2024-09-15 23:56:00 · 680 阅读 · 0 评论 -
Spring源码(10)--Transactional注解的源码
方法路径: org.springframework.jdbc.datasource.DataSourceTransactionManager#doGetTransaction。方法路径: org.springframework.jdbc.datasource.DataSourceTransactionManager#doBegin。包括 :begin(开启事务) 和commit(提交事务)、rollback(回滚事务)这是 Transactional 事务的核心代码,使用了 AOP。原创 2024-08-02 23:10:54 · 554 阅读 · 0 评论 -
Spring源码(9)--FactoryBean简介
FactoryBean 是一个工厂对象,用于创建和管理其他 Bean 的实例。FactoryBean 接口定义了一种创建 Bean 的方式,它允许开发人员在 Bean 的创建过程中进行更多的自定义操作。通过实现 FactoryBean 接口,开发人员可以创建复杂的 Bean 实例,或者在 Bean 实例化之前进行一些额外的逻辑处理。此接口在框架中大量使用,例如用于AOP的org.springframework.AOP.framework.ProxyFactoryBean。原创 2024-09-02 23:26:22 · 1040 阅读 · 0 评论 -
Spring源码(8)--Spring实例化的策略
Spring实例化的策略有几种 ,可以看一下 InstantiationStrategy 相关的类。原创 2024-07-30 23:39:39 · 502 阅读 · 0 评论 -
Spring源码(7)--Bean生命周期相关的接口
详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140425175。如果Bean在Spring的 xml 配置文件中配置了init-method属性,会自动调用其配置的初始化方法。BeanPostProcessor常见的使用的场景,是处理标记接口实现类,或者为当前对象提供代理实现。Bean工厂实现应该尽可能支持标准的Bean生命周期接口。Bean生命周期接口相关的这些类和接口,都可以多看看。原创 2024-07-26 00:01:27 · 489 阅读 · 0 评论 -
Spring源码(6)--BeanFactory 实现与继承关系
由bean工厂实现的BeanFactory接口的扩展,这些bean工厂可以枚举它们所有的bean实例,而不是按客户端请求逐个按名称进行bean查找。Spring 的 IoC 容器可以建立父子层级关联的容器体系,子容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器;这个扩展的接口只是为了允许框架内部的即插即用和对bean工厂配置方法的特殊访问。由bean工厂实现的子接口,可以是层次结构的一部分。原创 2024-07-23 23:59:16 · 786 阅读 · 1 评论 -
Spring源码(5)--ApplicationContext 源码
详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140247662。可以看到 ApplicationContext 间接继承了 BeanFactory。可以先简单了解下 ApplicationContext 和 BeanFactory。原创 2024-07-21 13:51:42 · 208 阅读 · 0 评论 -
Spring源码(4) Aware 接口
可以参阅 org.springframework.context.support.ApplicationContextAwareProcessor 和org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory。首先会判断对象是否属于 Aware接口类型,接着根据不同的Aware接口实现类,调用不同的实现类的逻辑。Aware 接口 表示bean可以通过回调方法从Spring容器接收特定框架对象的通知。原创 2024-07-14 23:06:52 · 243 阅读 · 0 评论 -
Spring源码(3) Spring IoC之BeanFactory创建bean和获取bean
bean 对象主要放在 map 里面,map 作为缓存。map 的key 是 bean对象的名称, value 是 bean 对象或者对象工厂。代码详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140155044。详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140247662。根据 bean 名称,返回已经注册的单例对象,如果没有注册,则创建并注册一个新对象。原创 2024-07-11 14:56:13 · 1064 阅读 · 0 评论 -
Spring源码(2) refresh () 方法
refresh()方法的路径: org.springframework.context.support.AbstractApplicationContext#refresh。详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140155044。详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140247662。BeanFactory 是在这个方法生成的。原创 2024-07-10 22:36:38 · 496 阅读 · 0 评论 -
Spring之 IoC、BeanFactory、ApplicationContext
Martin Fowler提出了DI(Dependency Injection,依赖注入)的概念用来代替IoC, 即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。Spring的IoC容器在完成这些底层工作的基础上,还提供了Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系。原创 2024-07-07 16:07:26 · 457 阅读 · 0 评论 -
Spring源码(1) 如何阅读 Spring 源码
学习 Spring 的源码,也可以通过 SpringBoot 搭环境。不管是什么源码,最好写个 demo,跑起来,然后从常用的类和方法入手,跟踪调试。原创 2024-07-03 16:09:52 · 734 阅读 · 0 评论