Spring框架七大模块简单介绍

作者:_萨瓦迪卡 时间:2023-03-10 10:25:23 

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

Spring框架七大模块简单介绍

Spring框架的7个模块

组成 Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

1核心模块

SpringCore模块是Spring的核心容器,它实现了IOC模式,提供了Spring框架的基础功能。此模块中包含的BeanFactory类是Spring的核心类,负责JavaBean的配置与管理。它采用Factory模式实现了IOC即依赖注入。谈到JavaBean,它是一种Java类,它遵从一定的设计模式,使它们易于和其他开发工具和组件一起使用。定义JavaBean是一种JAVA语言写成的可重用组件。要编写JavaBean,类必须是具体类和公共类,并且具有无参数的构造器。

2Context模块

SpringContext模块继承BeanFactory(或者说Spring核心)类,并且添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能。它还提供了框架式的Bean的访问方式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、Email和定时任务调度等。

3AOP模块

Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化。Spring提供了用标准Java语言编写的AOP框架,它的大部分内容都是基于AOP联盟的API开发的。它使应用程序抛开EJB的复杂性,但拥有传统EJB的关键功能。

4DAO模块

DAO是DataAccessObject的缩写,DAO模式思想是将业务逻辑代码与数据库交互代码分离,降低两者耦合。通过DAO模式可以使结构变得更为清晰,代码更为简洁。DAO模块提供了JDBC的抽象层,简化了数据库厂商的异常错误(不再从SQLException继承大批代码),大幅度减少代码的编写,并且提供了对声明式事务和编程式事务的支持。

5ORM映射模块

SpringORM模块提供了对现有ORM框架的支持,各种流行的ORM框架已经做得非常成熟,并且拥有大规模的市场,Spring没有必要开发新的ORM工具,它对Hibernate提供了完美的整合功能,同时也支持其他ORM工具。注意这里Spring是提供各类的接口(support),目前比较流行的下层数据库封闭映射框架,如ibatis,Hibernate等。

6Web模块

此模块建立在SpringContext基础之上,它提供了Servlet * 的Context和Web应用的上下文。对现有的Web框架,如JSF、Tapestry、Structs等,提供了集成。Structs是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等。

7MVC模块

pringWebMVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离。说说MVC在JSP的作用,这里引入了“控制器”这个概念,控制器一般由Servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。因此,这个Servlet控制器为应用程序提供了一个进行前-后端处理的中枢。一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC模式。实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。

总结

Spring工作原理简单探索

Spring框架web项目实战全代码分享

理解Spring中的依赖注入和控制反转

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

来源:https://www.cnblogs.com/cunkouzh/p/5415064.html

标签:spring框架,七大模块
0
投稿

猜你喜欢

  • Android实现EditText的富文本编辑

    2022-04-14 21:44:29
  • 常用Maven库,镜像库及maven/gradle配置(小结)

    2023-11-20 23:44:00
  • C#(int)中Convert、Parse、TryParse的区别

    2023-06-25 03:19:50
  • Springboot快速入门教程

    2023-03-02 21:50:56
  • C语言实现线性表的基本操作详解

    2022-02-24 22:08:32
  • java简单坦克大战制作代码

    2023-02-07 05:08:37
  • Kotlin协程的启动方式介绍

    2022-05-26 10:29:27
  • IDEA解决springboot热部署失效问题(推荐)

    2023-08-12 10:40:49
  • C#与java TCP通道加密通信实例

    2023-12-03 15:44:29
  • 详解C++设计模式编程中建造者模式的实现

    2022-10-25 01:33:20
  • Java使用设计模式中的工厂方法模式实例解析

    2021-12-07 03:57:49
  • MyBatis中使用$和#所遇到的问题及解决办法

    2023-03-25 12:27:55
  • 解决Java API不能远程访问HBase的问题

    2023-11-27 04:17:48
  • java实现学生信息管理系统

    2023-11-11 08:22:35
  • Java中的static关键字你了解多少

    2022-05-21 11:25:51
  • C# 文字代码页 文字编码的代码页名称速查表

    2023-12-13 04:03:54
  • Java 反射机制实例详解

    2023-11-28 03:49:47
  • C#自定义函数NetxtString生成随机字符串

    2022-06-18 20:43:39
  • Android Spinner和GridView组件的使用示例

    2022-07-01 15:03:40
  • Android实战教程第八篇之短信备份

    2021-07-17 23:31:43
  • asp之家 软件编程 m.aspxhome.com