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完成对数据库的访问
目录
相关文章
|
28天前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
234 3
|
12天前
|
人工智能 监控 安全
如何快速上手【Spring AOP】?核心应用实战(上篇)
哈喽大家好吖~欢迎来到Spring AOP系列教程的上篇 - 应用篇。在本篇,我们将专注于Spring AOP的实际应用,通过具体的代码示例和场景分析,帮助大家掌握AOP的使用方法和技巧。而在后续的下篇中,我们将深入探讨Spring AOP的实现原理和底层机制。 AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的核心特性之一,它能够帮助我们解决横切关注点(如日志记录、性能统计、安全控制、事务管理等)的问题,提高代码的模块化程度和复用性。
|
30天前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
395 10
|
2月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
2月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
284 2
|
2月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
226 13
|
4月前
|
人工智能 Java 数据库连接
Spring事务失效场景
本文深入探讨了Spring框架中事务管理可能失效的几种常见场景及解决方案,包括事务方法访问级别不当、方法内部自调用、错误的异常处理、事务管理器或数据源配置错误、数据库不支持事务以及不合理的事务传播行为或隔离级别。通过合理配置和正确使用`@Transactional`注解,开发者可以有效避免这些问题,确保应用的数据一致性和完整性。
184 10
|
3月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
133 1
|
4月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
|
3月前
|
Java 数据库 开发者
Spring Boot 框架超级详细总结及长尾关键词应用解析
本文深入讲解Spring Boot框架的核心概念、功能特性及实际应用,涵盖自动配置、独立运行、starter依赖等优势。通过Web开发、微服务架构、批处理等适用场景分析,结合在线书店实战案例,演示项目初始化、数据库设计、分层架构实现全流程。同时探讨热部署、多环境配置、缓存机制与事务管理等高级特性,助你高效掌握Spring Boot开发技巧。代码示例详尽,适合从入门到进阶的学习者。
799 0