Spring模块与应用场景

简介: Spring框架是一个Java平台,它为Java应用程序提供全面的基础框架支持。它也是现在非常流行的开源框架,只要是做Java开发,肯定接触过Spring的使用,不管我们对它的了解如何,多或者少,我们还是要尽力挖掘出Spring的功能价值。


Spring框架的功能被分开为多个模块,如下图所示:

微信图片_20220518162938.png

一、模块



1. 核心容器

  • spring-core:Spring核心模块
  • spring-beans:Bean容器支持
  • spring-context:建立在Bean模块基础上,扩展了功能
  • spring-context-support:支持整合第三方库到Spring上下文
  • spring-expression:提供表达式语言


2. AOP和Instrumentation

  • spring-aop:提供AOP(页面切面编程)支持
  • spring-aspects:提供AspectJ的集成
  • spring-instrumentation:提供类植入支持和类加载器的实现


3. 消息

  • spring-messaging:消息传递模块


4. 数据访问/集成

  • spring-jdbc:提供JDBC抽象层
  • spring-tx:支持编程和声明式事务管理
  • spring-orm:为流行的对象关系映射API提供集成层
  • spring-oxm:提供支持对象/XML映射实现的抽象层
  • spring-jms:用于生产和消费消息的功能


5. Web


  • spring-web:提供基本的面向Web的集成功能
  • spring-webmvc:用于Web应用程序的模型-视图-控制器(MVC)和REST Web Services实现
  • spring-websocket:提供Web Socket的支持


6. 测试

  • spring-test:支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试

在使用Maven或者其他构建工具管理项目时,可以选择性地添加Spring的依赖,使用什么或能就添加什么依赖。


7. 使用场景


7.1 典型的完整的Spring Web应用程序


微信图片_20220518163049.png这是Spring的完整使用案例,基于Tomcat Servlet容器,所有定制的业务逻辑都可以使用简单的POJO(普通Java类)实现,并由Spring的IoC容器进行管理,一般使用的结构是从上到下在项目中分层:

  • 顶层是MVC层,包括表单控制器,Multipart Resolver(文件上传解析器),动态绑定实体模型,集成JSP,Velocity等视图模板引擎。
  • 中间层是业务层,包括自定义业务,消息,以及远程访问
  • 底层是数据持久层,主要实现ORM映射


7.2 使用第三方Web框架的Spring中间层

微信图片77777.png

假设我们要使用Spring框架来重构一个项目,情况不允许你完全切换到另一个不同的框架。Spring框架不强制你使用它所有的功能,它不是一个全有或全无的解决方案,我们从它由多个模块组件的构成就可以看出。我们完全可以使用第三方Web框架,比如Struts、Tapestry、JSF等UI框架,它们都可以与基于Spring的中间层集成,从而使用Spring的IoC和事务等功能。而你只需要做的就是使用ApplicationContext来管理你的业务逻辑类,并使用WebApplicationContext来集成你的Web层。此时分层结构是:

  • 顶层是Web层,使用第三方Web框架
  • 中间层是业务层
  • 底层是数据持久层


7.3 远程使用场景

微信图片88888.png

你现在需要通过Web服务访问现有代码时,可以使用Spring的Hessian-,Rmi-或HttpInvokerProxyFactoryBean类,启用对现有应用程序的远程访问并不困难。


7.4 EJBs-包装现有的POJOs

微信图片99999.png

Spring还为EJBs(企业级JavaBean)提供了一个访问和抽象层,使你能够重用现有的POJO,并将其包装在无状态会话bean中。

通过上面的使用场景了解到Spring在企业项目中的应用和定位,我们完全可以按照自己的意愿选择性地使用Spring,比如搭建一个基于SSM框架的项目:

  • 控制层使用SpringMVC模块
  • 业务层使用Spring框架管理并且可以整合其他组件
  • 持久层使用Spring整合MyBatis完成对数据库的访问
目录
相关文章
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
198 1
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
128 62
|
9天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
179 0
|
1月前
|
XML Java 数据格式
Spring Core核心类库的功能与应用实践分析
【12月更文挑战第1天】大家好,今天我们来聊聊Spring Core这个强大的核心类库。Spring Core作为Spring框架的基础,提供了控制反转(IOC)和依赖注入(DI)等核心功能,以及企业级功能,如JNDI和定时任务等。通过本文,我们将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring Core,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
56 14
|
2月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
238 12
基于开源框架Spring AI Alibaba快速构建Java应用
|
1月前
|
Java 关系型数据库 数据库
京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
45岁老架构师尼恩分享了Spring事务的核心知识点,包括事务的两种管理方式(编程式和声明式)、@Transactional注解的五大属性(transactionManager、propagation、isolation、timeout、readOnly、rollbackFor)、事务的七种传播行为、事务隔离级别及其与数据库隔离级别的关系,以及Spring事务的10种失效场景。尼恩还强调了面试中如何给出高质量答案,推荐阅读《尼恩Java面试宝典PDF》以提升面试表现。更多技术资料可在公众号【技术自由圈】获取。
|
29天前
|
XML 前端开发 安全
Spring MVC:深入理解与应用实践
Spring MVC是Spring框架提供的一个用于构建Web应用程序的Model-View-Controller(MVC)实现。它通过分离业务逻辑、数据、显示来组织代码,使得Web应用程序的开发变得更加简洁和高效。本文将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring MVC,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
66 2
|
2月前
|
JSON 安全 算法
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
76 8
|
2月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
54 1
|
2月前
|
JavaScript Java 关系型数据库
Spring事务失效的8种场景
本文总结了使用 @Transactional 注解时事务可能失效的几种情况,包括数据库引擎不支持事务、类未被 Spring 管理、方法非 public、自身调用、未配置事务管理器、设置为不支持事务、异常未抛出及异常类型不匹配等。针对这些情况,文章提供了相应的解决建议,帮助开发者排查和解决事务不生效的问题。