1.spring包含了多个功能模块,其中最重要的是spring-core,主要提供ioc依赖注入功能的支持,spring中的其他模块功能都需要依赖该模块。
spring整体框架
最底层:
1.core:spring框架的核心工具类
2.bean:提供对bean的创建、配置和管理等功能
3.context:提供一些core以外的扩展功能,例如,国际化、事件传播、资源加载等
4.expression:提供对表达式语言SpEL的支持。spel允许你在运行时动态地评估表达式,这对于需要在运行时根据条件或外部输入来决定行为的场景非常有用。
第二层:
AOP:
aspects:
Instrument:
messaging:为 Spring 框架集成一些基础的报文传送应用。
第三层: 数据访问/集成:
1.jdbc:不同的数据库有自己独立的api用于操作数据库,而在spring里,只需要和jdbc api交互即可对不同数据库进行操作。
2.tx:对事务进行操作
3.orm(object relational mapping):提供对 Hibernate、JPA、iBatis 等 ORM 框架的支持。对象关系映射模式实现程序对象到关系型数据库数据的映射。例如,orm可以将MySQL的一张表映射为一个Java类,表的字段就是这个类的成员变量。
4.oxm:专门用于支持对象到XML的映射(OXM,Object-to-XML Mapping)。这个模块提供了一个抽象层,使得开发者可以使用多种不同的OXM框架(如JAXB、Castor、XMLBeans、JiBX和XStream)进行XML数据的序列化和反序列化操作。
5.jms:消息服务。
springweb:
1.web:对web功能的实现提供一些最基础的支持。
2.webmvc:
3.websocket:可以让客户端和服务端进行双向通信
4.webflux:与传统的基于Servlet的Spring MVC不同,spring-webflux
使用反应式流(Reactive Streams)规范,支持非阻塞I/O操作和背压(backpressure)管理,从而能够更好地利用现代多核CPU和异步网络I/O的优势。
2.spring ioc
ioc是控制反转,它是一种设计思想,就是将对象创建的权力交给spring框架或者ioc容器实现。例如,一个项目中,一个service类可能依赖很多其他的类,如果需要实例化该类时,需要同时实例化他所依赖的类,当销毁该类时,还需要确保它的使用方法都已经销毁。而利用ioc的话,只需要配置好,在需要的地方直接引用即可,具体地实例创建交给ioc容器来实现。这样大大增加了项目的可维护性,降低开发难度。
扩展知识:
1.bean:
bean是指一个由spring容器管理的对象。这个对象可以是任何一个Java类的实例。bean实例是通过IOC机制来创建和管理的。spring容器可以通过xml配置文件或者注解来创建bean。bean的主要优势是可以将对象的创建和管理与业务逻辑分离,这使得应用程序易于维护。例如,在一个web应用程序中,我们可以将数据库连接的创建和管理交给spring容器,业务逻辑由应用程序本身负责。这样,我们需要切换数据库时,只需要修改spring配置文件即可。