在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Spring 应用性能调优

  • 2007-11-29
  • 本文字数:1581 字

    阅读完需:约 5 分钟

在来自 SpringSource 的一份新白皮书中,Adrian Colyer 说明了 Spring 所提供的运行时环境。

Spring 编程和配置模型已经得到很好的理解并有大量的文档,而且被全球数十万开发者所使用。这个白皮书是为管理 Spring 应用程序的运营团队而写的。

白皮书的第一部分回顾了 Spring 内核的核心职责,它们是: - 引导程序 —— 创建应用程序上下文,它为应用程序提供运行时上下文。

  • 决定组件配置 —— 决定哪些应用组件需要被创建、它们是怎样被配置的、以及它们需要什么样的支持服务。这个步骤也就是大家所熟知的蓝图(blueprint)阶段,这时决定了服务准备情况。
  • 实例化、配置及装配 —— 使用蓝图,组件现在可以在需要的时候被构造。这一阶段极为重要,因为 Spring 需要需要考虑组件间的依赖、特定顺序、以及构造机制。这一阶段的失败将导致应用程序不可操作。
  • 组件后处理(Post Processing) —— 调用被 Spring 企业级服务和用户服务器注册为后处理器的组件。
  • 装饰 —— 当使用 AOP 命名空间或标注类将横切组件行为描述、声明为 aspect 时,Spring 内核就有了额外的任务。所描述的切入点(pointcut)需要被许可,并为原始组件产生一个代理,以便用额外的功能装饰该组件。
  • 管理组件生命周期和范围 —— 由于组件可能有不同的生命周期和范围,Spring 内核将持续监视创建、重用和销毁组件。

白皮书中更有趣的部分涉及 Spring 应用程序性能调优。象其他任何应用程序一样,首先建议使用如 Apache JMeter、Selenium、JAMon 或利用 Spring AOP 或 AspectJ aspect 去测量一下性能。 > 于是最优化归结为两类:建立一个有效的蓝图(调优你的配置)、有效使用运行时设施(使你的应用设计最优化)。从一个干净且清晰的设计开始,充分利用 Spring 提供的设施,只在数据显示确实有好处的地方才无需遵循这一点。

建立一个有效的蓝图
为了建立一个有效蓝图,你需要利用你的部署平台,让环境依赖脱离 Spring 配置。当声明数据库连接和 JMS 连接时这一点尤为重要,那些利用 JNDI 的地方能使你充分利用你的部署平台设施。白皮书所提供的其他建议是: > Spring 的 PropertyPlaceholderConfigurer 非常适合将那些可能需要由运营团队修改的配置设定外部化。

而且 > 这里一个好的技巧是使用 Spring 的 JMX 输出(export)能力来定义一个 MBean,它通过 JMX 来暴露所有配置值。这使你能够连接到一个正在运行的应用程序上,并很容易看到它当前正在使用的配置值。

利用运行时最优化
许多产品运行时的性能问题都会被跟踪至持久层,拥有正确优化过的数据库和数据访问层是极其重要的。

  • 争取在 eager 和 lazy 装载策略之间找到恰当的平衡点
  • 在 log 中显示出 SQL 语句
  • 对于批量操作、大批更新或插入、以及存储过程,通常最好使用 JDBC(通过 Spring JDBC)而非 ORM 工具
  • 充分利用你的数据库所提供的特性
  • 如果你有一个包含完整持久性逻辑(并非业务逻辑)的操作,考虑将它作为存储过程移到数据库中,并通过 Spring JDBC 来调用
  • 只读引用数据可以被保持在内存缓存中

性能调优章节的结尾是从 SpringSource 的一些顾问那儿搜集的其他调优和最优化技巧的汇总:

  • Spring Batch 项目中支持的重试可以用来重试失败的操作(例如,在 Oracle RAC 中,一个在某一簇节点上已经失败的操作)。通过减少传播到最终用户失败的数量,可以减轻运营负担。
  • 不要低估 Web 内容展现的开销。你应该明确地在事务之外做这项工作。
  • 不要每次请求都实例化应用程序上下文(它是团队移植遗留应用到 Spring 上时不时会碰到的错误)。
  • 对可以在后台运行的任务,考虑使用 Spring 的异步任务执行器来减少用户等待时间。
  • 选择合适的远程协议。如果你不需要 SOAP 的互通性,一个简单方案(如 Spring 的 HttpInvoker 支持)将更快更简单。
  • 对影响大部分应用程序的 aspect,考虑使用 AspectJ 代替 Spring AOP。

完整的白皮书可以从 SpringSource 下载。 查看英文原文: Performance Tuning Spring Applications

2007-11-29 01:503684
用户头像

发布了 150 篇内容, 共 53.9 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Apache Doris 2.0.6 版本正式发布

SelectDB

数据库 开源 数据仓库 数据湖 大数据 开源

IBM + X-POWER + 源卓微纳:以AI会友,共创制造业智能化故事2.0

财见

iframe自动化革命:颠覆传统网页嵌入的新趋势

测吧(北京)科技有限公司

测试

华为云开年采购季全面启动 智领千行万业 赋能美好未来

轶天下事

LED芯片寿命试验过程解析

Dylan

屏幕亮度 光热发电 电子 LED display LED显示屏

信创国产化堡垒机就选行云堡垒机!

行云管家

信创 堡垒机 国产化

逐点半导体与网易《逆水寒》手游就移动端视觉处理优化达成合作

财见

Ortel推出用于激光雷达和光学传感的下一代激光模块

财见

三个案例,带你看懂智能时代支撑降本增效的底层逻辑

第七在线

云原生最佳实践系列 1:如何快速实现kafka性能压测

阿里巴巴云原生

kafka 阿里云 云原生 消息

数字化车间MES管理系统是如何降低企业生产成本

万界星空科技

数字化转型 数字化 制造业 mes 万界星空科技

如何通过ETL做数据转换

谷云科技RestCloud

ETL 数据集成 数据转换

新一代AI模型Claude 3:有大学生智商,全面超越GPT-4,现已正式登陆 Amazon Bedrock!

伊克罗德信息科技

你是在「做」敏捷还是正在「变得」敏捷?

敏捷开发

项目管理 Scrum 敏捷开发 敏捷转型 敏捷团队

详解GaussDB(DWS)中3个防过载检查项

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

制造业工厂中的设备管理系统

万界星空科技

工业互联网 制造业 mes 设备管理 设备数据采集

Footprint Analytics 强势入局 AI 推出全新投研工具

Footprint Analytics

#人工智能 #区块链

2024呼和浩特等保测评机构名单看这里!

行云管家

等保 等保测评 呼和浩特

三种方式,浅谈 Cocos Creator 的动画添加

北桥苏

游戏开发 小游戏 CocosCreator

深入探讨GPT系列与其他NLP架构的流行度差异及其应用解析

毛显新

人工智能 Transformer GPT 大语言模型

Hero Talk|无缝扩展:Kubernetes 上的 Amazon Aurora 分片和流量管理

亚马逊云科技 (Amazon Web Services)

人工智能 生成式AI

研华发布新一轮企业战略框架 迎向AIoT + Edge Computing新机遇

财见

华为配置WAPI-PSK安全策略

知孤云出岫

数据通信

NFTScan | 03.11~03.17 NFT 市场热点汇总

NFT Research

NFT\ NFTScan

软件测试学习笔记丨Pytest结合数据驱动读取csv文件

测试人

软件测试

C++语言现在还有人学吗?

小魏写代码

矩阵起源新一年喜报连连!

MatrixOrigin

数据库 分布式 云原生

Spring应用性能调优_Java_Ian Roughley_InfoQ精选文章