spring-aop:其它模块依赖的基础,提供核心功能,切点的定义,切面的逻辑编写与织入。
spring-aspects:提供更多的功能支持,声明式事务管理,缓存支持,异步防范支持等
spring-beans
spring-context
spring-context-indexer:用于生成spring应用程序的索引文件工具。可以分析类路径,生存包含所有组件的索引文件。使用了反射机制来扫描和解析应用程序的类路径。
spring-context-support:提供应用程序上下文相关的支持类和工具,简化Spring应用程序的开发和集成。上下文的创建和配置支持,资源加载和处理支持,国际化,任务调度,邮件发送
spring-core:
spring-expression:表达式语言,运行时对对象进行求值和操作。
spring-instrument:
spring-jcl:记录日志的抽象层。统一方式处理日志,不依赖于特定的日志实现,提供了一套统一的日志接口。核心类Log接口
spring-jdbc:与数据库交互,给予JDBC规范,封装JDBC API,提供模板类和辅助类,连接,查询,事务和操作等。核心类JdbcTemplate。dataSource接口用于管理数据库连接池,RowMapper
接口将结果集映射为对象。TransanctionTemplate 用于管理数据库事务。
spring-jms:用于支持消息队列的集成和消息传递。核心接口为JmsTemplate和MessageListenerContainer。JmsTemplate用于发送和接收消息的模板类,封装常见操纵,发送接收,事务等。MessageListenerContainer 用于管理消息监听器的容器,负责监听消息队列,将收到的消息传递给注册的消息监听器处理。
spring-messaging:支持消息传递和异步通信。基于消息中间件(message broker)的概念,通过消息发送者和接收者,实现程序间通信。核心接口为message和messageChannel。 message是消息内容和元数据。messageChannel为消息通道,发送和接收消息。spring提供了多种类型消息通道,如点对点,发布-订阅,广播等。其次,还有messageConverter用于将消息转换为特定的数据类型。messageHandler是一个处理接收消息的接口。
spring-orm:简化和支持与关系型数据库的交互。提供方式处理对象与关系数据库直接的映射和操作。支持多种ORM框架,比如jpa,hibernate,mybatis等。核心是SessionFactory(hibernate核心接口)和EntityManagerFactory(jpa的核心接口)。两个接口控制数据库的连接,查询,事务和操作等
spring-oxm:用于对象与xml之间的映射和转换。支持多种xml数据绑定技术,Castor,JAXB,XMLBeans和JIBX等,可以实现java对象与xml文档之间的转换。核定接口是marshaller 将java对象遍组为xml文档,Unmarshaller则将xml文档解组为java对象。一系列方法,控制编解组行为,如设置命名空间,处理循环引用,日期格式等
等等
第一步:
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,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 support
- includeGroup 'io.projectreactor.netty'
- }
- }
第四步:idea自动构建
开始学习:
先读Spring-beans
AbstractPropertyAccessor 抽象类:访问和操作java属性的基类。可以获取属性,设置熟悉,判断是否可读可写等
具体实现类
BeanWrapperImpl:通过反射机制来访问或者操作对象属性。
DirectFieldAccessor:通过反射访问对象字段。
PropertyValues接口,用于定义方法属性值信息
AbstractNestablePropertyAccessor 是PropertyAccessor 的抽象类,用于访问和操作嵌套对象,访问和操作嵌套属性,可以获取属性,设置熟悉,判断是否可读可写等
BeanInfoFactory 是策略接口,用于创建BeanInfo实例,CachedIntrospectionResults会遍历已经发现的BeanInfoFactory,对每个工厂调用getBeanInfo
CachedIntrospectionResults通过SpringFactpriesLoader 工具类实例化。
BeanMetadataAttribute:表示bean相关的元数据属性,提供bean相关的附加信息,例如作用域/依赖关系等。可以定义自定义注解或标记,可以被框架或者其他组件用于执行特定操作。为bean添加数据,增强功能。
BeanMetadataAttributeAccessor:对BeanMetadataAttribute对象的访问和操作,获取修改该对象关联的元数据属性。
BeanMetadataElement:与bean相关的元数据元素,用于表示bean的来源、描述、资源等
BeanUtils:属性复制,属性获取和设置,属性类型转换,动态创建和操作javabean。
BeanUtils.instantiateClass 使用无参构造实例,并返回该实例
BeanWrapper:对javabean进行包装和操作,属性访问,类型转换,事件通知,元数据访问(属性名,属性类型,属性描述等)。
BeanWrapperImpl:
CachedIntrospectionResults:用于缓存javabean的内省结构,内省指的是通过反射机制获取和操作javabean的属性,方法和事件等信息,涉及到类结构分析和解析,比较耗时。避免重复内省,使用了缓存机制,将javabean和内省结果缓存起来。
ConfigurablePropertyAccessor:可配置的属性访问器,通过该访问器,获取设置和删除属性,还可以检查属性是否存在。
DirectFieldAccessor理解:直接字段访问器,获取、设置和删除对象的字段值,检查字段是否存在。
ExtendedBeanInfo 理解:提供对bean的扩展信息的访问,是beaninfo接口的扩展。获取bean的属性、方法、事件等详细信息。对bean的自定义编辑器、自定义显示和自定义持久化等扩展功能的支持。
PropertyDescriptorUtils理解:简化和辅助处理javabean的属性描述符,提供静态方法。获取属性的描述信息,比如属性的名称,类型,读写等
PropertyEditorRegistry:注册和管理属性编辑器(PropertyEditor),是beanWrapper接口的一部分,处理属性值的类型转换。用于注册和获取属性编辑器,通过编辑器可将属性与特定的属性类型进行关联,以便在需要的时候能自动使用属性编辑器进行属性值的类型转换,更方便的进行数据绑定和处理。
PropertyEditorRegistrar:用于注册属性编辑器(PropertyEditor)。可以被用于自定义注册属性编辑器的逻辑。
TypeConverter:是一个类型转换器,用于在不同类型间转换,用于处理属性值的类型转换。可以处理基本数据类型,字符串,集合,数组等类型,支持自定义类型。常于DataBinder一起使用,用于实现数据的绑定和类型转换。spring将字符串表示的属性值转换为java对象时,自动调用该类。
TypeConverterSupport:抽象类实现TypeConverter接口,提供便捷的方法进行类型转换。
Aware理解:用于bean能够感知spring某些特性和功能,实现Aware接口,bean可以于spring容器进行交互,获取额外信息和使用特定功能。