Spring框架基础问题

1,034 阅读4分钟

什么是Spring框架?

Spring框架首先是一个基于Java的开源项目spring-framework。其次,Spring框架出现的目的是为了简化企业级应用开发的复杂度,是对Java EE(或者该说是Jakarta EE了)规范的补充,Spring框架提供了基础架构,使得用户可以专注于应用程序本身,而非规范细节。比如:

  • 可以使在Java方法级别执行数据库事务,而不必处理事务API。
  • 可以使Java方法成为HTTP endpoint,而不必处理Servlet API。
  • 可以使Java方法成为message handler,而不必处理JMS API。

Spring虽然是用于Java企业级应用开发的最广泛的框架,但Spring的核心功能可用于开发任何Java应用程序。可以构建各种Web应用程序,也可以仅在简单的独立应用程序中使用其依赖注入等特性。

Spring框架提供了哪些Feature?

  • 核心技术:依赖项注入,events,resources,i18n,validation,数据绑定,类型转换,SpEL,AOP。
  • 测试:mock objects, TestContext framework, Spring MVC Test,WebTestClient。
  • 数据访问:事务,DAO支持,JDBC,ORM,Marshalling XML。
  • Web应用:Spring MVC和Spring WebFlux Web框架。
  • 集成:remoting, JMS, JCA, JMX, email, tasks, scheduling, cache。
  • 语言:支持Kotlin,Groovy动态语言。

Spring框架由哪些模块组成?

核心容器(Core Container)

核心容器(Core Container)是Spring框架的基本功能。由几个模块组成:spring-core, spring-beans, spring-context, spring-context-support, spring-expression (Spring Expression Language)

spring-corespring-beans这两个模块是Spring框架的基础部分, 包括IOC和依赖注入. 核心容器的主要组件是 BeanFactory,它是工厂模式的实现。 BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖与实际的应用程序代码分开。

Spring上下文(Spring Context)

Spring上下文(spring-context)模块是在Core和Beans基础之上的模块,它提供了一种类似于JNDI注册中心的方式来访问对象的方法。 Spring上下文从Beans模块继承其功能,并增加了对国际化(例如,resource bundles),事件传播,资源加载等。Spring上下文还支持Java EE功能,例如EJB,JMX和基本远程处理。 ApplicationContext接口是Spring上下文模块的重点。 spring-context-support提供了第三方库集成的支持,如缓存(EhCache,Guava,JCache),邮件(JavaMail),调度(CommonJ,Quartz)和模板引擎(FreeMarker,JasperReports,Velocity)的支持。

AOP 和 Instrumentation

spring-aop模块提供了一个符合AOP规范的面向方面的编程实现,例如,您可以定义方法拦截器和切入点,以实现功能解耦。单独的spring-aspects模块提供了与AspectJ的集成。

spring-instrument模块提供instrumentation支持和类加载器实现,以在某些应用服务器中使用。spring-instrument-tomcat模块包含用于Tomcat的Spring instrumentation 代理。

Data Access/Integration

数据访问/集成(Data Access/Integration)层由JDBC,ORM,OXM,JMS和事务模块组成。

spring-jdbc模块提供了一个JDBC抽象层,从而消除了对数据库厂商特定的代码进行繁琐的JDBC编码和解析的需要。

spring-tx模块支持对实现特殊接口的类以及所有POJO(普通Java对象)进行编程和声明式事务管理。

spring-orm模块为流行的对象关系映射API(包括JPA,JDO和Hibernate)提供了集成层。使用spring-orm模块,您可以将所有这些OR映射框架与Spring提供的所有其他功能结合使用,例如前面提到的简单的声明式事务管理功能。

Web

Web层由spring-web,spring-webmvc,spring-websocket和spring-webmvc-portlet模块组成。

spring-web模块提供了基本的面向Web的集成功能,例如文件上传功能以及使用Servlet侦听器和面向Web的应用程序上下文对IoC容器的初始化。它还包含HTTP客户端以及Spring远程支持的Web相关部分。

spring-webmvc模块(也称为Web-Servlet模块)包含Spring的模型视图控制器(MVC)和针对Web应用程序的REST Web服务实现。 Spring的MVC框架在域模型代码和Web表单之间提供了清晰的分隔,并与Spring框架的所有其他功能集成在一起。

spring-webmvc-portlet模块(也称为Web-Portlet模块)提供要在Portlet环境中使用的MVC实现,并镜像基于Servlet的spring-webmvc模块的功能。

Test

spring-test模块提供了集成测试和单元测试的支持。