1 / 32

Spring 在淘宝业务系统中的应用

Spring 在淘宝业务系统中的应用. 君山(许令波) 淘宝网 - 商品详情团队. 关于我. 花名:君山 真名:许令波 博客: http://xulingbo.net 微博: @ 淘宝君山 邮箱: xulingbo0201@163.com 简介: 2009 年毕业加入淘宝,一直在做淘宝商品详情系统的性能优化方面的工作,开发过一个 Sketch 模板引擎、 Feiba MVC 框架、给 developerworks 投稿获得过最佳作者,著有 《 深入分析 Java Web 技术内幕 》 一书。. 内容提要. 淘宝业务系统特点 基于 Spring 的 MVC 架构

Download Presentation

Spring 在淘宝业务系统中的应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spring在淘宝业务系统中的应用 君山(许令波) 淘宝网-商品详情团队

  2. 关于我 花名:君山真名:许令波博客:http://xulingbo.net微博:@淘宝君山邮箱:xulingbo0201@163.com简介:2009年毕业加入淘宝,一直在做淘宝商品详情系统的性能优化方面的工作,开发过一个Sketch模板引擎、Feiba MVC框架、给developerworks 投稿获得过最佳作者,著有《深入分析Java Web技术内幕》一书。

  3. 内容提要 • 淘宝业务系统特点 • 基于Spring的MVC架构 • 基于SpringExt的Webx框架介绍 • Spring Schema与SpringExt • SpringExt原理 • 用SpringExt扩展Webx框架实例

  4. 内容提要 • 淘宝业务系统特点 • 基于Spring的MVC架构 • 基于SpringExt的Webx框架介绍 • Spring Schema与SpringExt • SpringExt原理 • 用SpringExt扩展Webx框架实例

  5. 淘宝业务系统特点 • 业务系统繁多 • 上万个业务系统、系统之间关联错综复杂 • 业务场景复杂 • 各种各样的需求都有、业务场景复杂 • 业务变化频繁 • 需求变化快、维护性要方便 • 系统访问量高 • 性能要求高

  6. 基于Spring IOC构建整个业务层 业务系统以IOC容器为核心 向上以Velocity模板引擎来驱动 向下以HSF远程调用关联起来 分布式Cache层 持久层

  7. 基于IOC的业务层架构 三层划分非常清晰 每个系统都是一个IOC容器 各层的依赖关系完全由Spring的配置文件来管理

  8. Spring在淘宝的使用 使用非常广泛 使用的都是比较普遍和成熟的功能 解决依赖注入为核心目的 特性功能很少使用,主要是考虑复杂度和性能考虑

  9. 内容提要 • 淘宝业务系统特点 • 基于Spring的MVC架构 • 基于SpringExt的Webx框架介绍 • Spring Schema与SpringExt • SpringExt原理 • 用SpringExt扩展Webx框架实例

  10. 基于Spring的MVC框架 业务系统都是基于Webx框架 Webx是什么?

  11. Webx是什么 • 一个重量级的MVC框架 • Webx的设计理论 • 三层设计

  12. Webx的整体架构 各个功能模块都转化成Bean 支持子容器的概念

  13. Webx是什么 核心是IOC容器

  14. Webx的扩展 自定义Schema 扩展机制--SpringExt

  15. 内容提要 • 淘宝业务系统特点 • 基于Spring的MVC架构 • 基于SpringExt的Webx框架介绍 • Spring Schema与SpringExt • SpringExt原理 • 用SpringExt扩展Webx框架实例

  16. Spring最原始的配置 • 只实现了最基本的IOC • 存在的问题 • 没有检验机制 • 无法了解更多约束条件 • 配置依赖于实现

  17. 基于Spring Schema • 优点 • 配置简化 • 可验证 • 包含更多约束条 • 依赖XML Schema • 缺点 • 配置无法自由不可扩展

  18. 基于SpringExt Schema 重新定义namespaces —— 将ResourceLoader和<resource-loading>所属的namespace分离 将自定义的file-loader和webapp-loader放在loaders名字空间中,不要修改<resource-loading>的schema,而就能扩展

  19. SpringExt是如何做到自由扩展的? 运用了XML Schema中的<xsd:any>定义,相当于说:<resource> element下面,可以跟任意多个<loaders:*> elements 只规定namespace是“http://www.alibaba.com/schema/services/resource-loading/loaders”。

  20. database-loader如何注入到resource-loading中?

  21. 如何实现自定义chema? Configuration Point Contribution 自定义jar包

  22. Configuration Point 对应一个唯一的名称,例如:services/resource-loading/loaders。 对应一个唯一的namespace,例如:http://www.alibaba.com/schema/services/resource-loading/loaders。 对应一个唯一的schema,例如:services-resource-loading-loaders.xsd。

  23. Contribution 唯一的名字,如database-loader 唯一的schema,services/resource-loading/loaders/database-loader.xsd

  24. 自定义jar包 定义实现类 定义Schema

  25. 自定义扩展实例1—唯一名称

  26. 自定义扩展实例1—定义Schema

  27. 自定义扩展实例1—构建jar包 定义实例类的类名

  28. 自定义扩展实例1—工程引入jar包 pom文件引入

  29. 自定义扩展实例2 Pull中增加一个扩展

  30. 自定义扩展实例2 增加Schema 定义类名 引入jar包

  31. 自定义扩展总结 在配置文件中自定义一个唯一名称 在要扩展的namespace中定义Schema 指定要实现的类型路径 构建一个jar包引入到工程中 所以使用SpringExt就可以不用修改原Schema的情况下使用自定义扩展

  32. Thank You!

More Related