- 博客(22)
- 收藏
- 关注
原创 CommonAnnotationBeanPostProcessor
主要处理@Resource注解进行依赖注入,以及和生命周期注解的处理可以看到实现了和两个接口,还实现了接口,用于生命周期中的初始化和销毁的处理。
2025-04-07 09:30:00
950
原创 AutowiredAnnotationBeanPostProcessor
主要处理@Autowired和@Value注解进行依赖注入。可以看到实现了和两个接口。
2025-04-06 15:59:35
265
原创 DefaultListableBeanFactory
是个Factory,也就是IOC容器或对象工厂,而是Bean工厂的一个默认实现,提供了原始的的功能,如:对外提供getBean()方法,维护一张表。
2025-04-06 15:43:37
938
原创 Spring循环依赖
循环依赖,其实就是循环引用,就是两个或者两个以上的 Bean 互相引用对方,最终形成一个闭环,如 A 依赖 B,B 依赖 C,C 依赖 A。结果:需要注意的是本例中启动时是不会报错的(因为非单例Bean默认不会初始化,而是使用时才会初始化),所以很简单咱们只需要手动。对于构造器注入出现缓存依赖,Spring 是无法解决的,因为当前 Bean 还未实例化,无法提前暴露对象,所以只能抛出异常。):存储Bean的ObjectFactory,用于创建早期的Bean实例。
2025-04-06 13:23:53
1179
原创 AbstractBeanFactory
抽象类,实现接口,的基础实现类,提供依赖查找方法,可获取 Bean 对象,接下来我们来看看依赖查找的实现。
2025-04-05 17:17:08
777
原创 ConstructorResolver
工厂方法创建一个实例对象,例如 XML 配置的。这个过程非常复杂,你可以理解为去找到最匹配的。标注的方法都会解析成。
2025-04-05 16:16:24
316
原创 TypeConverter
接口是Spring框架中用于在SpEL(Spring表达式语言)中进行类型转换的核心接口,它允许将不同类型的对象相互转换,例如将字符串转换为数字、将对象转换为字符串等,为Spring应用程序提供了统一且灵活的类型转换机制,以满足各种复杂场景下的类型转换需求。在某些情况下,源对象的类型和目标类型之间可能存在不兼容的情况,无法进行转换。在进行类型转换时,可能会出现转换失败的情况,例如源对象的类型无法转换为目标类型,或者转换过程中发生异常。然后,定义一个需要转换的字符串值,通过解析表达式获取表达式对象,再通过。
2025-04-04 15:41:50
785
原创 BeanWrapperImpl
它作为BeanWrapper接口的默认实现,它足以满足所有的典型应用场景,它会缓存Bean的内省结果而提高效率。从继承体系上,首先我们应该能看出来。
2025-04-02 19:56:07
858
原创 Reflection机制
由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等,因此,如果获取了某个Class实例,我们就可以通过这个Class实例获取到该实例对应的class的所有信息。这种通过Class实例获取class信息的方法称为反射(Reflection)。
2025-03-30 14:51:53
793
原创 Javassist
Javassist为我们提供了类似于Java反射机制的API,如:CtClass,CtConstructor、CtMethod、CtField与Java反射的ClassMethodField非常的类似。类描述ClassPoolClassPool是一个存储CtClass的容器,如果调用get方法会搜索并创建一个表示该类的CtClass对象CtClassCtClass表示的是从ClassPool获取的类对象,可对该类就行读写编辑等操作CtMethod可读写的类方法对象可读写的类构造方法对象。
2025-03-29 15:25:31
477
原创 Agent机制
代码位于包/*** 要重定义的类*/> mClass;/*** 用于替换的本地 class ,为 byte 数组*//*** 构造方法,使用提供的类和类文件字节创建一个新的 ClassDefinition 绑定*//*** 以下为 getter 方法*/
2025-03-28 16:44:01
578
原创 ResourcePatternResolver
它通过类路径、文件系统或URL等多种资源位置,能够根据给定的资源模式获取匹配的资源。接口,允许通过类路径、文件系统、URL等多种方式获取匹配指定模式的资源。,用于解析资源模式,支持通过模式匹配检索多个资源。其中,常见的实现类是。是Spring框架中用于解析位置模式为资源对象的策略接口。方法,您可以使用包含通配符的资源模式,例如。是Spring框架中的一个接口,扩展自。,来获取满足条件的资源数组。来加载匹配指定模式的资源。
2025-03-27 22:22:52
545
原创 ResourceLoader
是 Spring 框架中的一个关键接口,它定义了如何获取资源(例如类路径资源、文件系统资源或网页资源)的策略。这个接口是 Spring 资源加载抽象的核心,使得应用程序可以从不同的资源位置以统一的方式加载资源。这提供了资源加载的灵活性和一致性,并支持各种资源描述符,如 URL、类路径等。提供了一个标准化的方法来加载资源,不论资源是存放在类路径、文件系统、网络URL还是其他位置。它提供了获取资源的方法,并公开了其使用的。是一个接口,这意味着我们可以实现自己的资源加载策略,或者扩展默认的策略以满足特定需求。
2025-03-27 20:41:11
785
原创 Environment
接口是 Spring 框架中的一个核心部分,它提供了一个统一的方式来访问各种外部化的配置数据,例如环境变量、JVM 系统属性、命令行参数、以及应用程序配置文件(如 properties 或 YAML 文件)。5.属性源优先级问题:遇到多个属性源中存在同名属性,导致获取到的值不是预期的那个问题时,了解和管理不同属性源的优先级,确保正确的属性源被优先读取。6.必需属性的访问:可以获取标记为必需的属性,如果这些属性不存在,将抛出异常,这有助于在启动时捕捉配置错误。)在应用程序中未被替换为实际的属性值时,检查。
2025-03-27 20:21:53
817
原创 XmlBeanDefinitionReader
是Spring Framework中的一个类,用于加载和解析XML格式的Bean定义配置文件,将配置文件中定义的Bean元数据信息提取为Spring容器内部的Bean定义对象,进而实现IOC容器的构建和管理。这类负责读取XML配置文件,解析Bean的定义信息(包括ID、类名、属性、依赖等),并将这些定义注册到Spring应用程序上下文,使我们能够方便地配置和管理应用程序中的各种Bean组件。
2025-03-27 19:51:13
1002
原创 Spring启动流程
Spring 容器创建过程主要就是调用 refresh() 方法。我们先一起看看 refresh() 方法具体做了哪些事。
2025-03-27 18:40:24
781
1
原创 mybatis拦截器
我们在执行查询的时候,如果sql没有加上分页条件,数据量过大的话会造成内存溢出,因此我们可以通过MyBatis提供的插件机制来拦截sql,并进行sql改写。原理类似于拦截器,拦截我们需要处理的对象,进行自定义逻辑后,返回一个代理对象,进行下一个拦截器的处理。我们先来看下一个简单插件的模板,首先要实现一个Interceptor接口,并实现三个方法。@Intercepts注解指定需要拦截的方法签名,内容是个Signature类型的数组,而Signature就是对拦截对象的描述。
2025-03-27 13:53:43
283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人