什么是Spring框架

这个问题的古老答案是,“Spring 是一个依赖注入框架”。实际上,它远不止于此。
Spring 是最流行的 Java 企业应用程序开发框架,它带有许多工具和库来解决 Java 世界中的几乎所有问题。无论是微服务还是简单的数据库驱动的企业应用程序,Spring 都有必要的工具来帮助您入门。目前很难解释 Spring技术栈中可用的所有功能和库,随着您的进步,您将逐渐了解它们。
您会遇到两个新关键字,Dependency 和 Dependency Injection,让我们一一了解。
什么是依赖注入?
依赖注入是一种使类的创建独立于其依赖关系的技术。这基本上是将对象使用与其创建解耦。我将用一个例子来解释这一点。
在下面的代码中,PDFReader 需要一个 FileProcessor 对象。 PDFReader 直接依赖于 FileProcessor 类,这是两个类之间的紧密耦合。
public class PDFReader {
private FileProcessor fileProcessor;
public PDFReader(){
this.fileProcessor = new FileProcessor() ;
}
}
我们可以将上面的类重写为松散耦合的类,如下面的代码,其中 FileProcessor 在构造函数中传递。这种实现代码的方式称为依赖注入。
public class PDFReader {
private FileProcessor fileProcessor;
public PDFReader( FileProcessor fileProcessor ){
this.fileProcessor = fileProcessor;
}
}
大家能看出这两种实现方式的区别吗?
1、第一个实现中,FileProcessor的创建由PDFReader控制,它们之间形成了强烈的耦合。
2、第二个实现中,PDFReader没有控制FileProcessor的创建,而是通过构造器注入实现的,它们之间是松耦合的。
Spring框架的核心模块
Spring Framework 由几个模块组成,每个模块都包含单独的功能。根据项目需要,您可以使用必要的模块作为 Maven/Gradle 依赖项。
各种 Spring 模块可以组合在一起分为以下几类。
1、Spring 核心模块——IoC 容器、事件、资源、i18n、验证、数据绑定、类型转换、SpEL、AOP。
2、Spring 测试模块——模拟对象、TestContext 框架、Spring MVC 测试、WebTestClient。
3、数据访问模块——事务、DAO 支持、JDBC、O/R 映射、XML 编组。
4、Web Servlet 模块——Spring MVC、WebSocket、SockJS、STOMP 消息传递。
5、响应式 Web 模块 – Spring WebFlux、WebClient、WebSocket。
6、集成模块——远程处理、JMS、JCA、JMX、电子邮件、任务、调度、缓存。