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完成对数据库的访问
目录
打赏
0
2
1
0
17
分享
相关文章
Spring中事务失效的场景
因为Spring事务是基于代理来实现的,所以某个加了@Transactional的⽅法只有是被代理对象调⽤时, 那么这个注解才会⽣效 , 如果使用的是被代理对象调用, 那么@Transactional会失效 同时如果某个⽅法是private的,那么@Transactional也会失效,因为底层cglib是基于⽗⼦类来实现 的,⼦类是不能重载⽗类的private⽅法的,所以⽆法很好的利⽤代理,也会导致@Transactianal失效 如果在业务中对异常进行了捕获处理 , 出现异常后Spring框架无法感知到异常, @Transactional也会失效
Java也能快速搭建AI应用?一文带你玩转Spring AI可落地性
Java语言凭借其成熟的生态与解决方案,特别是通过 Spring AI 框架,正迅速成为 AI 应用开发的新选择。本文将探讨如何利用 Spring AI Alibaba 构建在线聊天 AI 应用,并实现对其性能的全面可观测性。
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
第二届开放原子大赛 Spring AI Alibaba 应用框架挑战赛决赛于 2 月 23 日在北京圆满落幕。
Spring AI与DeepSeek实战一:快速打造智能对话应用
在 AI 技术蓬勃发展的今天,国产大模型DeepSeek凭借其低成本高性能的特点,成为企业智能化转型的热门选择。而Spring AI作为 Java 生态的 AI 集成框架,通过统一API、简化配置等特性,让开发者无需深入底层即可快速调用各类 AI 服务。本文将手把手教你通过spring-ai集成DeepSeek接口实现普通对话与流式对话功能,助力你的Java应用轻松接入 AI 能力!虽然通过Spring AI能够快速完成DeepSeek大模型与。
405 11
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
837 54
基于开源框架Spring AI Alibaba快速构建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应用的开发流程。
2805 0
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
196 62
Spring Core核心类库的功能与应用实践分析
【12月更文挑战第1天】大家好,今天我们来聊聊Spring Core这个强大的核心类库。Spring Core作为Spring框架的基础,提供了控制反转(IOC)和依赖注入(DI)等核心功能,以及企业级功能,如JNDI和定时任务等。通过本文,我们将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring Core,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
84 14
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等