orm框架有哪些_Java架构—Spring 核心框架体系结构

2023-10-30

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的!

spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可以简洁明了,下面举个例子,要在普通java工程使用spring框架,需要哪些jar呢?只要一个

org.springframework spring-context 3.2.17.RELEASE

那要在web工程中引入spring mvc呢?也只要配置一个依赖

org.springframework spring-webmvc 3.2.17.RELEASE

为什么可以这样配置?接下来我们以spring 3.2.17.RELEASE版本为例,介绍spring框架结构,spring 4稍有不同,将在最后介绍

spring官网给出了一张spring3的结构图

图中将spring分为5个部分:core、aop、data access、web、test,图中每个圆角矩形都对应一个jar,如果在maven中配置,所有这些jar的“groupId”都是“org.springframework”,每个jar有一个不同的“artifactId”,另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar包一共是19个

下面介绍这5个部分的jar以及依赖关系

core

core部分包含4个模块

  1. spring-core:依赖注入IoC与DI的最基本实现
  2. spring-beans:Bean工厂与bean的装配
  3. spring-context:spring的context上下文即IoC容器
  4. spring-expression:spring表达式语言

它们的完整依赖关系

因为spring-core依赖了commons-logging,而其他模块都依赖了spring-core,所以整个spring框架都依赖了commons-logging,如果有自己的日志实现如log4j,可以排除对commons-logging的依赖,没有日志实现而排除了commons-logging依赖,编译报错

org.springframework spring-context 3.2.17.RELEASEcommons-logging commons-logging 

aop

aop部分包含4个模块

  1. spring-aop:面向切面编程
  2. spring-aspects:集成AspectJ
  3. spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用于服务器
  4. spring-instrument-tomcat:针对tomcat的instrument实现

它们的依赖关系

data access

data access部分包含5个模块

  1. spring-jdbc:jdbc的支持
  2. spring-tx:事务控制
  3. spring-orm:对象关系映射,集成orm框架
  4. spring-oxm:对象xml映射
  5. spring-jms:java消息服务

它们的依赖关系

web

web部分包含4个模块

  1. spring-web:基础web功能,如文件上传
  2. spring-webmvc:mvc实现
  3. spring-webmvc-portlet:基于portlet的mvc实现
  4. spring-struts:与struts的集成,不推荐,spring4不再提供

它们的依赖关系

test

test部分只有一个模块,我将spring-context-support也放在这吧

  1. spring-test:spring测试,提供junit与mock测试功能
  2. spring-context-support:spring额外支持包,比如邮件服务、视图解析等

它们的依赖关系

到这里,spring3的介绍就完了,看着这些图我相信你在maven中配置spring依赖时不会再混乱了

下面介绍spring4,与spring3结构基本相同,下面是官网给出的结构图

可以看到,图中去掉了spring3的struts,添加了messaging和websocket,其他模块保持不变,因此,spring4的jar有20个

  1. spring-websocket:为web应用提供的高效通信工具
  2. spring-messaging:用于构建基于消息的应用程序

它们的依赖关系

点个关注不迷路!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

orm框架有哪些_Java架构—Spring 核心框架体系结构 的相关文章

随机推荐

  • swagger-spring-boot-starter: java.lang.OutOfMemoryError: Java heap space

    问题描述 记录一下idea启动项目是报堆空间溢出 swagger spring boot starter java lang OutOfMemoryError Java heap space 原因分析 在网上很多都是教你设置JVM堆的最大值
  • 低通采样定理与带通采样定理

    一 低通 采样定理 如何从抽样信号中恢复原连续信号 在什么条件下才可以无失真地由采样信号恢复原连续信号 著名的采样定理对此作了明确的回答 采样定理在通信系统 信息传输理论 数字信号处理等方面占有十分重要的地位 该定理在连续时间信号与系统和离
  • 扫雷的c语言代码

    输入一个数 确保判断的组数 然后用 代表雷 代表非雷区 从而输出雷区与非雷区的数字 曾经借鉴过某位大佬c 的算法https www cnblogs com J william p 6041413 html include
  • thread ‘main‘ panicked at ‘called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound

    thread main panicked at called Result unwrap on an Err value Os code 2 kind NotFound message 系统找不到指定的文件 src main rs 31 5
  • 大数据课程I4——Kafka的零拷贝技术

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 掌握Kafka的零拷贝技术 了解常规的文件传输过程 一 常规的网络传输原理 表面上一个很简单的网络文件输出的过程 在OS底层 会发现数据会被拷贝4次 内核态可
  • 苏移笔试

    1 Linux查看一个目录下文件占用多少空间 du sh path 我们有个系统每天要下载数据 为了检查下载数据是否正常 需要查看下载数据目录大小 因为每天的数据都差不多 如果变化太大就说明不正常 查看目录大小的命令是du 当然也可以查看文
  • n行Python代码系列专栏文章目录

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 专栏简介 本专栏介绍使用少量Python代码 n行 n小于等于10 实现特定的功能或能力 并介绍其背后支撑相关的模块和函数 主要用于介绍Pyt
  • 【游戏引擎】win7配置安装firefly【草稿尝试篇】

    firefly是python的开源服务端游戏引擎 而且它使用了不少软件 数据库mysql 缓存memcached等等 配置firefly其实就是配置完整的一个服务器环境 python2 7安装 安装python2 7 mysql memca
  • 感谢Python

    2012 12 20 不得不说 要不是读了Thinking in Java 要不是受不了作者的的唠叨 不停的推荐Python 我目前所学习到的一切也都无从说起了 感谢Python 到目前为止 Python依然是我的最爱 写代码起来最实用 S
  • 会话技术 Cookie +jsp(实现上次登录时间功能)

    会话技术 1 会话 一次会话中包含多次请求和响应 一次会话 浏览器第一次给服务器资源发送请求 会话建立 直到有一方断开为止 2 功能 在一次会话的范围内的多次请求间 共享数据 3 方式 1 客户端会话技术 Cookie 2 服务器端会话技术
  • 什么是煤矿智能化综采工作面?

    转载 https zhuanlan zhihu com p 354323715 什么是煤矿智能化综采工作面 2021年对于煤矿产业是关键性一年 从国家到集团公司对于煤矿的智能化建设都提出了要求 将人工智能 5G通信 大数据技术引入 基本实现
  • stm32编码器接口测速

    本文章转自B站江科大自化协 目录结构 Encoder c include stm32f10x h Device header void Encoder Init void 第一步开启RCC时钟 开启GPIO和定时器的时钟 RCC APB1P
  • c#窗体程序添加图标详细教程

    一 为什么要给窗体程序添加图标 俗话说 人靠衣装 马靠鞍 一个有个性的窗体程序 不能总是使用微软自带的默认图标 而给程序添加一个自己喜欢的图标 不仅彰显水平 还会增加用户的使用体验 所以 窗体程序加入合适的图标值得程序员的学习 下面就开始教
  • 计算机视觉 图像检索与识别

    目录 一 图像检索相关介绍 1 起因 2 参数介绍 图像纹理 词序无关的文本表述 图像分类 图像特征词典 图像整体描述子 二 图像分类 检索具体内容 图像分类 检索 单词的TF IDF权重 倒排表 Inverted file 图像检索流程
  • QT 添加资源文件

    转自 https blog csdn net dianzishi123 article details 86475565 鼠标点击工程文件目录右键选择 添加新文件 在模板中选择 Qt gt Qt Resource File 资源名称 不要有
  • Shell 基础知识

    Shell 基础知识 number 传递的参数 test sh myvalue1 myvalue2 1是第一个参数 2是第二个参数 echo first 1 second is 2 上一条命令 上一条命令的最后一个参数 Ctrl R 历史搜
  • 无人系统群体智能及其研究进展

    来源 无人机 作者 周兴社 武文亮 西北工业大学 计算机学院 陕西 西安 710129 摘 要 群体智能是人工智能的重要发展方向之一 无人系统群体智能作为人工群体智能的主要形态之一 在许多军用和民用领域都具有广阔且重要的应用前景 同时在基础
  • 服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

    作者 王夕宁 刘强 华相 公司介绍 丽迅物流是百丽旗下专注于时尚产业 为企业提供专业物流及供应链解决方案的服务商 其产品服务主要包括城市落地配 仓配一体 干线运输及定制化解决方案 通过自研智能化物流管理平台 全面助力企业合作集约化发展 目前
  • Ext_面板_Ext.Panel .

    javascript view plain copy print Ext Panel主要配置表 animCollapse Boolean 设置面板折叠展开是否显示动画 Ext Fx可用默认true 否则false applyTo Mixed
  • orm框架有哪些_Java架构—Spring 核心框架体系结构

    很多人都在用spring开发java项目 但是配置maven依赖的时候并不能明确要配置哪些spring的jar 经常是胡乱添加一堆 编译或运行报错就继续配置jar依赖 导致spring依赖混乱 甚至下一次创建相同类型的工程时也不知道要配置哪