Spring源码阅读(spring-framework-5.2.24)
spring-aop
spring-aspects
spring-beans
spring-context
等等
第一步:
Tags · spring-projects/spring-framework · GitHub
找到相应的release版本
第二步:
下载相应版本的gardle,如何看版本
spring-framework/gradle/wrapper /gradle-wrapper.properties
代码路径下
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
Gradle | Releases
下载gradle,idea配置gradle,像maven一样
第三步:
需要更换仓库,不用换gradle,直接在项目下更换,build.gradle下面
repositories {//该处增加maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}mavenCentral()maven {url "https://repo.spring.io/milestone"content {// Netty 5 optional supportincludeGroup 'io.projectreactor.netty'}}
第四步:idea自动构建
开始学习:
先读Spring-beans
AbstractPropertyAccessor 抽象类:访问和操作java属性的基类。可以获取属性,设置熟悉,判断是否可读可写等
具体实现类
BeanWrapperImpl:通过反射机制来访问或者操作对象属性。
DirectFieldAccessor:通过反射访问对象字段。
PropertyValues接口,用于定义方法属性值信息
AbstractNestablePropertyAccessor 是PropertyAccessor 的抽象类,用于访问和操作嵌套对象,访问和操作嵌套属性,可以获取属性,设置熟悉,判断是否可读可写等
BeanInfoFactory 是策略接口,用于创建BeanInfo实例,CachedIntrospectionResults会遍历已经发现的BeanInfoFactory,对每个工厂调用getBeanInfo
CachedIntrospectionResults通过SpringFactpriesLoader 工具类实例化。
BeanUtils.instantiateClass 使用无参构造实例,并返回该实例